From 87f5fb91b71e0a774294f90a8121b707f6a89e4d Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Sun, 29 Jan 2023 17:27:40 +0300 Subject: [PATCH] Debug compiled files deleted --- firmware/PCB-Heater/Debug/Core/Src/subdir.mk | 72 - .../PCB-Heater/Debug/Core/Startup/subdir.mk | 27 - .../STM32G0xx_HAL_Driver/Src/subdir.mk | 93 - .../FreeRTOS/Source/CMSIS_RTOS_V2/subdir.mk | 27 - .../Source/portable/GCC/ARM_CM0/subdir.mk | 27 - .../Source/portable/MemMang/subdir.mk | 27 - .../Third_Party/FreeRTOS/Source/subdir.mk | 45 - firmware/PCB-Heater/Debug/PCB-Heater.bin | Bin 58500 -> 0 bytes firmware/PCB-Heater/Debug/PCB-Heater.list | 42014 ---------------- firmware/PCB-Heater/Debug/makefile | 98 - firmware/PCB-Heater/Debug/objects.list | 50 - firmware/PCB-Heater/Debug/objects.mk | 9 - firmware/PCB-Heater/Debug/sources.mk | 31 - 13 files changed, 42520 deletions(-) delete mode 100644 firmware/PCB-Heater/Debug/Core/Src/subdir.mk delete mode 100644 firmware/PCB-Heater/Debug/Core/Startup/subdir.mk delete mode 100644 firmware/PCB-Heater/Debug/Drivers/STM32G0xx_HAL_Driver/Src/subdir.mk delete mode 100644 firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/subdir.mk delete mode 100644 firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/subdir.mk delete mode 100644 firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk delete mode 100644 firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/subdir.mk delete mode 100644 firmware/PCB-Heater/Debug/PCB-Heater.bin delete mode 100644 firmware/PCB-Heater/Debug/PCB-Heater.list delete mode 100644 firmware/PCB-Heater/Debug/makefile delete mode 100644 firmware/PCB-Heater/Debug/objects.list delete mode 100644 firmware/PCB-Heater/Debug/objects.mk delete mode 100644 firmware/PCB-Heater/Debug/sources.mk diff --git a/firmware/PCB-Heater/Debug/Core/Src/subdir.mk b/firmware/PCB-Heater/Debug/Core/Src/subdir.mk deleted file mode 100644 index d7b6f5a..0000000 --- a/firmware/PCB-Heater/Debug/Core/Src/subdir.mk +++ /dev/null @@ -1,72 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Core/Src/adc.c \ -../Core/Src/app_freertos.c \ -../Core/Src/gpio.c \ -../Core/Src/main.c \ -../Core/Src/max6675.c \ -../Core/Src/pid.c \ -../Core/Src/spi.c \ -../Core/Src/st7793_8bit.c \ -../Core/Src/stm32g0xx_hal_msp.c \ -../Core/Src/stm32g0xx_hal_timebase_tim.c \ -../Core/Src/stm32g0xx_it.c \ -../Core/Src/syscalls.c \ -../Core/Src/sysmem.c \ -../Core/Src/system_stm32g0xx.c \ -../Core/Src/tim.c \ -../Core/Src/usart.c - -OBJS += \ -./Core/Src/adc.o \ -./Core/Src/app_freertos.o \ -./Core/Src/gpio.o \ -./Core/Src/main.o \ -./Core/Src/max6675.o \ -./Core/Src/pid.o \ -./Core/Src/spi.o \ -./Core/Src/st7793_8bit.o \ -./Core/Src/stm32g0xx_hal_msp.o \ -./Core/Src/stm32g0xx_hal_timebase_tim.o \ -./Core/Src/stm32g0xx_it.o \ -./Core/Src/syscalls.o \ -./Core/Src/sysmem.o \ -./Core/Src/system_stm32g0xx.o \ -./Core/Src/tim.o \ -./Core/Src/usart.o - -C_DEPS += \ -./Core/Src/adc.d \ -./Core/Src/app_freertos.d \ -./Core/Src/gpio.d \ -./Core/Src/main.d \ -./Core/Src/max6675.d \ -./Core/Src/pid.d \ -./Core/Src/spi.d \ -./Core/Src/st7793_8bit.d \ -./Core/Src/stm32g0xx_hal_msp.d \ -./Core/Src/stm32g0xx_hal_timebase_tim.d \ -./Core/Src/stm32g0xx_it.d \ -./Core/Src/syscalls.d \ -./Core/Src/sysmem.d \ -./Core/Src/system_stm32g0xx.d \ -./Core/Src/tim.d \ -./Core/Src/usart.d - - -# Each subdirectory must supply rules for building sources it contributes -Core/Src/%.o Core/Src/%.su: ../Core/Src/%.c Core/Src/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG '-DCMSIS_device_header=' -DUSE_HAL_DRIVER -DSTM32G070xx -c -I../Core/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0 -I../Drivers/CMSIS/Device/ST/STM32G0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" - -clean: clean-Core-2f-Src - -clean-Core-2f-Src: - -$(RM) ./Core/Src/adc.d ./Core/Src/adc.o ./Core/Src/adc.su ./Core/Src/app_freertos.d ./Core/Src/app_freertos.o ./Core/Src/app_freertos.su ./Core/Src/gpio.d ./Core/Src/gpio.o ./Core/Src/gpio.su ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/main.su ./Core/Src/max6675.d ./Core/Src/max6675.o ./Core/Src/max6675.su ./Core/Src/pid.d ./Core/Src/pid.o ./Core/Src/pid.su ./Core/Src/spi.d ./Core/Src/spi.o ./Core/Src/spi.su ./Core/Src/st7793_8bit.d ./Core/Src/st7793_8bit.o ./Core/Src/st7793_8bit.su ./Core/Src/stm32g0xx_hal_msp.d ./Core/Src/stm32g0xx_hal_msp.o ./Core/Src/stm32g0xx_hal_msp.su ./Core/Src/stm32g0xx_hal_timebase_tim.d ./Core/Src/stm32g0xx_hal_timebase_tim.o ./Core/Src/stm32g0xx_hal_timebase_tim.su ./Core/Src/stm32g0xx_it.d ./Core/Src/stm32g0xx_it.o ./Core/Src/stm32g0xx_it.su ./Core/Src/syscalls.d ./Core/Src/syscalls.o ./Core/Src/syscalls.su ./Core/Src/sysmem.d ./Core/Src/sysmem.o ./Core/Src/sysmem.su ./Core/Src/system_stm32g0xx.d ./Core/Src/system_stm32g0xx.o ./Core/Src/system_stm32g0xx.su ./Core/Src/tim.d ./Core/Src/tim.o ./Core/Src/tim.su ./Core/Src/usart.d ./Core/Src/usart.o ./Core/Src/usart.su - -.PHONY: clean-Core-2f-Src - diff --git a/firmware/PCB-Heater/Debug/Core/Startup/subdir.mk b/firmware/PCB-Heater/Debug/Core/Startup/subdir.mk deleted file mode 100644 index 8373355..0000000 --- a/firmware/PCB-Heater/Debug/Core/Startup/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -S_SRCS += \ -../Core/Startup/startup_stm32g070rbtx.s - -OBJS += \ -./Core/Startup/startup_stm32g070rbtx.o - -S_DEPS += \ -./Core/Startup/startup_stm32g070rbtx.d - - -# Each subdirectory must supply rules for building sources it contributes -Core/Startup/%.o: ../Core/Startup/%.s Core/Startup/subdir.mk - arm-none-eabi-gcc -mcpu=cortex-m0plus -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" "$<" - -clean: clean-Core-2f-Startup - -clean-Core-2f-Startup: - -$(RM) ./Core/Startup/startup_stm32g070rbtx.d ./Core/Startup/startup_stm32g070rbtx.o - -.PHONY: clean-Core-2f-Startup - diff --git a/firmware/PCB-Heater/Debug/Drivers/STM32G0xx_HAL_Driver/Src/subdir.mk b/firmware/PCB-Heater/Debug/Drivers/STM32G0xx_HAL_Driver/Src/subdir.mk deleted file mode 100644 index 4ac8ee9..0000000 --- a/firmware/PCB-Heater/Debug/Drivers/STM32G0xx_HAL_Driver/Src/subdir.mk +++ /dev/null @@ -1,93 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc_ex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi_ex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_adc.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.c \ -../Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.c - -OBJS += \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc_ex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi_ex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_adc.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.o \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.o - -C_DEPS += \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc_ex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi_ex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_adc.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.d \ -./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.d - - -# Each subdirectory must supply rules for building sources it contributes -Drivers/STM32G0xx_HAL_Driver/Src/%.o Drivers/STM32G0xx_HAL_Driver/Src/%.su: ../Drivers/STM32G0xx_HAL_Driver/Src/%.c Drivers/STM32G0xx_HAL_Driver/Src/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG '-DCMSIS_device_header=' -DUSE_HAL_DRIVER -DSTM32G070xx -c -I../Core/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0 -I../Drivers/CMSIS/Device/ST/STM32G0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" - -clean: clean-Drivers-2f-STM32G0xx_HAL_Driver-2f-Src - -clean-Drivers-2f-STM32G0xx_HAL_Driver-2f-Src: - -$(RM) ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc_ex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc_ex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc_ex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi_ex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi_ex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi_ex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_adc.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_adc.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_adc.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.su ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.o ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.su - -.PHONY: clean-Drivers-2f-STM32G0xx_HAL_Driver-2f-Src - diff --git a/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/subdir.mk b/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/subdir.mk deleted file mode 100644 index 86be8de..0000000 --- a/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c - -OBJS += \ -./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o - -C_DEPS += \ -./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/%.o Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/%.su: ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/%.c Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG '-DCMSIS_device_header=' -DUSE_HAL_DRIVER -DSTM32G070xx -c -I../Core/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0 -I../Drivers/CMSIS/Device/ST/STM32G0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-CMSIS_RTOS_V2 - -clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-CMSIS_RTOS_V2: - -$(RM) ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.d ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-CMSIS_RTOS_V2 - diff --git a/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/subdir.mk b/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/subdir.mk deleted file mode 100644 index 01fb832..0000000 --- a/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.c - -OBJS += \ -./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.o - -C_DEPS += \ -./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/%.o Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/%.su: ../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/%.c Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG '-DCMSIS_device_header=' -DUSE_HAL_DRIVER -DSTM32G070xx -c -I../Core/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0 -I../Drivers/CMSIS/Device/ST/STM32G0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-portable-2f-GCC-2f-ARM_CM0 - -clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-portable-2f-GCC-2f-ARM_CM0: - -$(RM) ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.d ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.o ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-portable-2f-GCC-2f-ARM_CM0 - diff --git a/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk b/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk deleted file mode 100644 index 6fb9977..0000000 --- a/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c - -OBJS += \ -./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o - -C_DEPS += \ -./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/%.o Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/%.su: ../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/%.c Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG '-DCMSIS_device_header=' -DUSE_HAL_DRIVER -DSTM32G070xx -c -I../Core/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0 -I../Drivers/CMSIS/Device/ST/STM32G0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-portable-2f-MemMang - -clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-portable-2f-MemMang: - -$(RM) ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.d ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source-2f-portable-2f-MemMang - diff --git a/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/subdir.mk b/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/subdir.mk deleted file mode 100644 index 1a03c7c..0000000 --- a/firmware/PCB-Heater/Debug/Middlewares/Third_Party/FreeRTOS/Source/subdir.mk +++ /dev/null @@ -1,45 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Middlewares/Third_Party/FreeRTOS/Source/croutine.c \ -../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c \ -../Middlewares/Third_Party/FreeRTOS/Source/list.c \ -../Middlewares/Third_Party/FreeRTOS/Source/queue.c \ -../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c \ -../Middlewares/Third_Party/FreeRTOS/Source/tasks.c \ -../Middlewares/Third_Party/FreeRTOS/Source/timers.c - -OBJS += \ -./Middlewares/Third_Party/FreeRTOS/Source/croutine.o \ -./Middlewares/Third_Party/FreeRTOS/Source/event_groups.o \ -./Middlewares/Third_Party/FreeRTOS/Source/list.o \ -./Middlewares/Third_Party/FreeRTOS/Source/queue.o \ -./Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.o \ -./Middlewares/Third_Party/FreeRTOS/Source/tasks.o \ -./Middlewares/Third_Party/FreeRTOS/Source/timers.o - -C_DEPS += \ -./Middlewares/Third_Party/FreeRTOS/Source/croutine.d \ -./Middlewares/Third_Party/FreeRTOS/Source/event_groups.d \ -./Middlewares/Third_Party/FreeRTOS/Source/list.d \ -./Middlewares/Third_Party/FreeRTOS/Source/queue.d \ -./Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.d \ -./Middlewares/Third_Party/FreeRTOS/Source/tasks.d \ -./Middlewares/Third_Party/FreeRTOS/Source/timers.d - - -# Each subdirectory must supply rules for building sources it contributes -Middlewares/Third_Party/FreeRTOS/Source/%.o Middlewares/Third_Party/FreeRTOS/Source/%.su: ../Middlewares/Third_Party/FreeRTOS/Source/%.c Middlewares/Third_Party/FreeRTOS/Source/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m0plus -std=gnu11 -g3 -DDEBUG '-DCMSIS_device_header=' -DUSE_HAL_DRIVER -DSTM32G070xx -c -I../Core/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc -I../Drivers/STM32G0xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0 -I../Drivers/CMSIS/Device/ST/STM32G0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" - -clean: clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source - -clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source: - -$(RM) ./Middlewares/Third_Party/FreeRTOS/Source/croutine.d ./Middlewares/Third_Party/FreeRTOS/Source/croutine.o ./Middlewares/Third_Party/FreeRTOS/Source/croutine.su ./Middlewares/Third_Party/FreeRTOS/Source/event_groups.d ./Middlewares/Third_Party/FreeRTOS/Source/event_groups.o ./Middlewares/Third_Party/FreeRTOS/Source/event_groups.su ./Middlewares/Third_Party/FreeRTOS/Source/list.d ./Middlewares/Third_Party/FreeRTOS/Source/list.o ./Middlewares/Third_Party/FreeRTOS/Source/list.su ./Middlewares/Third_Party/FreeRTOS/Source/queue.d ./Middlewares/Third_Party/FreeRTOS/Source/queue.o ./Middlewares/Third_Party/FreeRTOS/Source/queue.su ./Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.d ./Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.o ./Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.su ./Middlewares/Third_Party/FreeRTOS/Source/tasks.d ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o ./Middlewares/Third_Party/FreeRTOS/Source/tasks.su ./Middlewares/Third_Party/FreeRTOS/Source/timers.d ./Middlewares/Third_Party/FreeRTOS/Source/timers.o ./Middlewares/Third_Party/FreeRTOS/Source/timers.su - -.PHONY: clean-Middlewares-2f-Third_Party-2f-FreeRTOS-2f-Source - diff --git a/firmware/PCB-Heater/Debug/PCB-Heater.bin b/firmware/PCB-Heater/Debug/PCB-Heater.bin deleted file mode 100644 index 29ee25c7d506ca4b6b29652451a148363ed64b15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58500 zcmd?Sdw5gVl{dVPBx6~&@r{dgBpX>WU=R?%qya>OESUqgav>&HI~UnNDw&YFx0F~j z!67&2(lmiI1&OA&v`sV3lzK|O28TDaN!z5Eb|jqi1shtCrfAwu8+Fnd8w*SCZ|!}K zBpZ@;=6S#Qg&B9_AN!F1s$R{%U-23< z*6(M=`B#WCx?b!bp}SalVZ8^??gznqP`O5C<>47uICn8ualFXST)LQH6HBmHB&V~t z^5}Dn*$Hk*oEZ)N%EQd1kLg;Ox$e8~7pHNzj z9@ffAZf#|cx9DF+sl#V{)cfgSeaWNV+lKX~N4+h>`qD?ejl=q~N4@34Sx1Sk`Uu_Y zhO4VfblYR})-uczC8k$#Ck?-;KPI;~-^cGC<@Y{*@8|afEe)6Q`&WS-@H!69?;qv& zK7Q}#_e25U`Tft2zY3~QL*g~~{iFQe$M608o+w8Re*Y@^0(i#Z`Te8(p86;a`}uvd z%#KS+dvm4IyD^)T4uhYm)VPj#w`eSOSF(4bUMcnMe(V3=oVg|OvkDe#_3A6xu*bW_ z!yE?{;`CB3Bh|y_9S=*83yfCT@WayHsz<#>^=iO%ZESB9OFUfie{1|s9=~t|w_*%C zD=QTV^f4EEyVcvfajVkF=@p||gi&RS#$$6Zro9`FDfcTzTbGhe&O6LfA4{`F=`B|O zx_91D%%apECOlqgc_qKUiQbJed*x9H|Bfm2{%R^aJ+W&?5H{EI4$POv%XI{l#tBA3u6gS(Wd}QVu6)%)L=G__lf%RU6HC}m|Eo1S4MD~)7 zSif`BQ0wz6lEdmUopP}@rBxaB*d6Wi7d(sEb#>1-%f2m2MBXB?w_Zx@m7XqH&ZN}S z=ZaQ8=y}M?PQR6CVn4Oo?b2mw&rhxY%d?VQUpLsy7NS`t}4<^F4 z%q1)y0iJf#Q_ASziK4B_yTxXo-IsXzi1IzdbOzd)M93L z{>*ce{5j8#x-T^^_O-Wck+!@oU6#G%x|rk)x7K*tjV6!m`$m#2U4oKM??L5Ei(jEu zUjUa_?9SwmlNtLxw&mVHoG9DJDP!>$6Kv_hSi5yIdiQE#i&DmZFYf`Cl9;rHEn@LU zQTyfiw~|EjWh{Hi*JACQ-t^$T$xOX;*&6TmICI?-XN@fWJaDo2XOfFqdkb5*Mbf=} zonN|4_G~F;v5w?%dHFxivc`RUY_0|!Ka6{oreyY#@5HWa=`lWwHp5qh~Qk60)X0sIZ2tQ^$Mh22_VN4m>PA3tVIIY7QfNS-d>itXRA(R+988#o!;c z`0`n{v?f-@UQ^z|9gC;W5=Mgl&$AxI4CsG9TgKiy%NDcPR^G3tl%Jn{O?mU|V$^SM z(I<~7*=+Xj@h_b^e6>O|X9H%LNY(Cy9=}f|B-h;7YPNehYrO6B4nAL8V!mAJlJsw{ zW*z?i<+Ywn3OCILj?WO*&m-~}ulz%Df zRebaAs*iYDy(KdB`GI7%UT@!%tYcYFbT}zFt+Lhi-BZt8wul||ob>e6eWAJBH?>zg zq?WfOKtGeDI?-hRe6}EK|D*otByoslbdk3t=2P_E8SxEDk#DDN0kH2hJ(%S0@Jvs; zAsao?CTWk?a@<ZEgp|IvJG|5HUA}vel7iT{10?p_Q&||lFa^l$Xg2d6y24; zNVuwJ?gYNqfo~r0Rigg9_$R!dXa?PwBXu#hXlDFAZ(U4Re`B4|BdvxuT)H667XL*+ zElR~$<6kh&9`B!%Y?&pVUGk?GTk>1f{Z0H`w8)nIHkL?!&0BQp_oM&l)tyKVGyADz zv$wfM&4!W>#EOx4NRRDK+oG{Odl_%J;O0+o}Wo4jBuTo_M z&6PQtSwd$gEqe5M0RA4^y4SE^_Fm6lj`aaHUD zqcu(MJ3#Yt?F;6Om~)@?glrYA^(Q{r7G=XXep$(03f&&N8(LiFlzn>@o&68Vjmj0u zeM%?hXJd?J=T9&@ucn?i94pEe+kLBjsh5Y8LFL=ZSCsLiY{@4uuOc+B=0}y6(95lu zR}q?5c>Z3Jxi-h!6{(4^OZJyZ-Wx`eo0J7*4F*SQDAN+I3GUx3@5ZY+z;8=BK1U-Tlqhvb{5-mRY{2Wb;|2Phu8rH5xoNpOI^i zb*Hy-?co&KW0e!yqkn~wUFNqzdmKCUth5c+uS%A_50|I3qi&G*ea2%WIgOZ;CdHz)fW*ut#+U45@Q@7d{4 z@|hKO_L%2{XKUTTW`l1kMO!7AW`4tsd?p((%l&+oU!fR$+jJY1tbLoQO}xW1)=E5k zlZ!y_vzVpZOzU#*=*^|cXVp2Y**`vAr)dQCP8;-j3%lM_WILoZzzW)1G7m$zSNUTF zSwXbI?M_IJYdoLxUK9J86+K?ePTd2!X7K}w>=G7#EYa_5S4IsqZfy#5+G69WEm%*7 zJrB$6$|Ig@>KZ+e>8 zt#$v@%o=KZ9W+J`*<--^WN4!Lzf5%7GH7)Kcy2Sr29Fi3_WiNAu|Tg28n<$bjVN3P z%jU1sx3z_^Kbw$NQJ?++J^o^=?CCU?dTM+_Nw#=p>~r2rV_8SL_etfeEp6b!HL>MZ zwuHqFCbn|B=hq2oHLc5I-0C`zC}%!i{y?ICVOBrSw;P&xx9OXZCbsy~F$tKSP=3fU zvH0u6$=Gelvq|Fgx1ljxlZ9>hVk@XE@S4VBFF4-KIsO#!dr`?LyM3$Dt-R@JmLKs{ zu}yXNHkbNVu`Ml6B{PoOZ7aRo;za2lmC}EJ-9?sKAPEa!iSluI9`D+fayBfta0;DM zDEtg`9MSi5GP6KhwZOXt_SYxlqTl;eY-^HRTUbK}tgyB=X;qD<16G(lIcg++_9Z)Y zx0w=y3u#s_Y)Cfy8{{TW1-GAiV8ImhrV+hqpx(UdvCDfrm8_-iE6sWz(Y6ZIojOZ& zJ|llhn#--RlV{m{i0i@$lrvWgw<50~D=+qmq))j#nO*YZSi92Qvc>o!dRxwZDIYuA zjS-j==RAnHlKl(W{H#5zKY5l$Y!&+^Y^<#>l)6{n2YQyJHM&a)G%^9fi(uv}GZ=v`>& z-lGRxrKgJ=%UHGiOOK9OSAM}GR_9Auk*{cxbh>RG?P`oyt@H$oOJWuFMvtMf2)mQb z80RlLS9&_-z0!5S{B}~~U`yXnTyLvC1f zrH{p~KQq+I7CeR)TNSoX=d}19#(H)J@*?e9#bz_HrrpZdwD-?Q7(w$HZu8HVqSZwX z-)OPyYh+cd_)va*OC6mLjt4%@9fkaP=3||>w6#8S&WI*03}_vU(qvP zi(y|=*#X7HK4SPt*{6W93HTz4U%AD1o6o0Q*J3X7SoUnd$_y+K<%X7`vOidg_W6`r zP{Irz%Y3Zq4P^`24Za@i1{O1SSwv~`b@`fGu4%ciWk9XDU-7oAHFo zvf<(8^_ElRhUjN>wZ3581I=5Mc5kcKU)gk zp4q;4if8+_85gv6wXj9kW0!(?<5-L}tSGj)_Id9M%{#r@EVJ2fB*WYN^>uA;uvwn2 zmfE%_u@W{UyNmy5+@@SZ7cuDS?P;EI9u7Kx6}Ng2Fd#b#hv5I=uP~|Z!+7hd(ebT$Px!wD$*~FYW|JxGnm*)qt_q6J5uw&}H#qlPe zP481?vxd_7Xu16?G=YAWuR-r;7?3Nwq%zu&XvEQ=mgnv>P74%XGOjD61Yi03DsP~GR6SNazF zUV~@gMbJr9ekcCD662PRaLs>~(CX_exc)t?tR@V{B)Ix7RvvaqVec zeXI9ztHl27naS*n4Y65mB$N9+MZQJs%DQhiukf)2{^DQ6`|YLJZAcEiNAeEGzYC1t zNt#+8Qx;*}i+jH0F~QBV-$OMdUzP9OWE1;RlH{--a``p<+k=0$de}9F{qQKWvdT49 z6TdSV*H}yVU5R0h?rW7dd$2|xQw(~YPQrhXWd2|O;rkD<@49QvtjsAhR$rPb8ei&P z)+Ps*_>V!#Is%LRMn@#j=x2_Rz(V}WUGx10M@Lr!-QVTFZ^vEr_>J5(&o4Pfy6XIP z2dh7Dt&QGv%k-w(;$Onc=Hf}-Iva2uTW8@nvbEa3j=!nIn~`l5elydjd})216q8c- zjk{~hK#98+nD}obu(o!Fzlssm>WqNu9Y3ZVRSbvvkNzv!HVu-88Cc^Jho3~hb_JF= z(`GZ9#rtMTeKA|v;I^2VO@01+HXO7D=V7f}9d}z`tw?Cig4VhSswlN?LbP%D_*}ny z#~goueXHK&lef*n6STFy#*+@DgO&b{9Tk3Ey~)?HwcOviL+7aR3e*?ydl6fe>KPK^#Eb!E#q_(Zr&+5&rIOWR1c0q}? z4P(Sh94L`dBDZ0@c!>oiW|WxQENV$5O2CBxQQd#^*|(VS+6Bzsg6n2nZ^rcsTtAI# z0N2NGy#v?p4>RLZD>L4R`xCggIGFKf+@Ht&rA}tthI>0;H#9I~5cjFWzfd+R{TMw1 zMz0K`2Z;$7nr1*s%*>Q}F|*fi4bpyqq`;WckAL289WcXZtepQGBuWP;Ln<-BoayeZ ziAP!|dTLlFi<(E-o9416>n?)4FLQrE`OO{u1y669bxpMce>bJX&{Q|@*(oJ6nydo{ zl}}D7Gd5WU?%b4b?^Uy@$vlvMHa5xZcK@)ssOf;Ry{&rJ6Us!7PdP5vunuoW^YKCb zUO%h{=?V7aR%Iny1X0$d4CCn@sVUu^?lHLbpT5y=9@yfy4BXK6bF5Y-r<8g&dmYNI zLfN%#MJPLtvPiZaWsf;rdMWkN#+Ad)8sb?ZS(K8Y;!V)G4;qewf)NEyn?YTPSs|^7VE&`wz7uR7Gu3B z^~Pj9T6hRlcYx}3j-P|-AE&J-vx2s@mUU?R=b$Z~30pb`YTHDuf1IoaL^X%-s}RRB z29>h4S(lKh-qtfDzdv{faY-ZF+yHre4L0$Mcs_(!~6EXYp^vhX@(}-0F}K^P&NZ{MP<(wlo=seRQC0PG81IW=J*h0?w`W7J((}~t-CC2Z(AuOy%Ul?oRjpKlaKRvkLKPT?0AHi zJeVsP<`REDFTJ;*l%#$)FAW!z3dz5lmw%?99MV1TDU_O7Z>t`3Sow@I(VXC=TA8uQ z%s%FS6|;cZ^-n8@{rpY*-F3Nl2Rp9i zCD-IiM6a&qrT&6a>QyT*RSHT)uYA1RQ&3L5x*Vluwsu;tR`b%rUajQ4k}lG#`pgnl z`qGn&bNzFh2`@`^Pq?s7$h*R3X{Fpt(rMiV|KN$?vv#%Cm0249`w}+HA+z(GndVS& z>R&TMA?QR~W~>ye)biL+$c(7o$6*JiyI&5C_hiQ&9@pC}Haj2=X7sk1tpxk`lX@G$ zbpkHjeXggZt;{)Y4)?HqrK}ipuHt-Sg60Cv4Vn+6+ZlV^`)`o*q0q7Vk{N{MAJ6IQ zX2e=hH*MB)z5IT9DAdeb_zHiwp1(8jcfU>3Y=1rNo+7skCRbyg{s^=CdB-*E518Sn z98&7-bE{Cg60`StyeV@WF`sH+Pf4j?pVxSJ)8rEWXb(|w4u*NUdy)TC5B0V>*W3B% zZ3Cxe2JdZV>|H=oZ|z*Sh~Ace&l$|_3muP?ny#rKj<9g@eb2TWd;#vj# z=X&Q0=Zn=5s+e49FHX%qf8THa0zSbydu1F~O}~)NfU(8-cpl}XPe`xyAAXSAD3@cs zXQ|uIGv`pCLe)-l5-e46UT+I`vHD%1%vc(Fv^qW%yc?sO8C!KuZv$+B+)zF1E}iQ) zCs_iS1H4Wab(Y44f(tn>UYwvh^C7o7*OK^=U_+~&x7&Qa&fgKL1y3!uO5lD_<=O8c zA(6o{v@vU?+#fbu2TWMO=K4pv=lJ`~)dP{OC5dndRB$ZC=d1i#$6glMIux|nR)gY$ zXuSj!ySqvuw?@eAN-np{Cnqqnv`YMa`hle2i^oH<#u$7yOC%4;+!Kc%;JjI{a`??j znggFmxPfbC!y3!e9M|oWZVSy8Pi*@soy!&LK1KN{l51A%7I^)lY{e$YVS%l9BJ;G` zrY}w9u1$=W|8u65!!141_X28}prK%=K#)<1Mr5CZVIXY0`vYn(+ts{Lq5b@5Ah0UD< zwuZG9dYTz?n`xBgez&F1+>YxEaQ<#}46i!>Iw<_o#4AaXaas#$AEEoMj-_km-gGU= z*fp{1)X^x3ZB8uaQu3FHMXHo+Of^>`v#tAni7 z`Q-tdKeClH$hXebPMN1g>A8Tkv{^QhwJ>{oUZ3!i<4ce!!Cm7EZIp8;X|^Y#@?U$Xn-%^bv$cx_ld)gVmxN? z-GsKg2%g)CoxmM_JKqWPU?*V5PQcye4t)&exBCsed>hIQD5sr67s>;EiI?AsatYrj5JAHBs+qaEc&!XI!4H)Hqo5$IZdYU|`zoTEjExppM*z2w^5bLt0xtdS8}LU%px7EY_|pbGQR(b@ZS;quHm~CeQG%Ewye4U zMu$D2+p=7R`5|D89ER`LfQ|4hQr`~ZZT6xV)>?>Wv8($spzLij>J`!=+QD7~J12eW zbAYM5C?=GvFyVAPq}&52+IQu5U&ZSC9cdcxQtZAk-n93E4XD>a8)2@oGTiTh7RO%9 z>bHR!*>7#@2$;dKNMJ5@86$z&xR<+T;kTo!n##MX@H^5~LFL^uAyxX+(0STDvedkD zCccN#r#3;0QOTTh$fV=Ee^f0gKPUE8y)@siWuBM+zPIw?d)Q0Ir|w~wj?*62fj#Wy z*u&aY{?oY7PH2?xU|H()xD~P^t1@L)Wr}2wcB#i4?Tk28UBD^Y?_;-$UWU!(D%WBY zCH|2eM(l$h#y)st>kK?WpJE?OQcFGH`&rP>d8+Pbb*a7QSZet=BH$U8nlT}zST-~E zqpU8~FwU^Y&W^QZS?UpRYeuXT+$F0)pUR{&$r8@T?dOc3oA%>!dPeGgMAGjVpON}n zHUs@g<3{^_TO+L*`*L$~72n~Pq@Kx=Z=+Iu`eK%}KVi4#WFGNQHWDCdp%EpS>A)`} zj{nNtTz>EiF9?479eZ^n;#wqc4Vwv9vpR+@_$!Ku|Ft@rNAOxi`0ognfPO>Di#3st zKlfSGK>GR*@8RnljiCW!D8+RtE0+aT7gaJ3$>AqoJf>u@S_*hK1FiiupX=2%IABju*{E@J@W7y(S$9PTJEh3rkPRM< z{vjLfqBCRl8RnSj&y0O94c|Ftn+0VXVNZnvQli8k4p5s0RfjB1hl6ID(3&)FUMAUP zvGt(xm3+TwR)m8zE9kd_|3>)lNVleQwbkvVKwseQ;17bCF&`|Pa90{!vDnD|sfTsv z#`CFAI@lRJU;l6s*+FwqD%;Y*Xh_&DGx1!DXKN4HNt0t=fdyr;H3Cvnt;5N&r%^_A zMu4po^;U-_$F6|v8DsRkhTB&Lvah-%H(~;UFi2ub96qJ6>mmW$h9inQMIpw zfTVtOa=UGE>|>N>k*EQZlaU=J~=i+h1T$9(kj0I zGtwh?RtdPDK*|j0PX|V1q`MqFrMJW@di!;}B`(PPZ93Q&l2N}e7@?M6y&qMKhYlT` zs$=(HCTd!C4!n|+tGV@JAXa!p%CZ@NqI8|g0b7du9}jZ_ZJ zWQ32g2>Qd2`W$v7QVe^ZjL@<6g^<(b5}#K#e=YR8)i2t%poQa%bbJC=P0NectJT&k z{boqCXuZ6kbyGp>#RaWjrM7NUTR*1od9s>$o;dtDKKE?}Rzyi^!(xms0tq{V7D@i?g-d)SBlv-|os5+eNkF~X$ zm7+^s!6}&mYw=ZIzsfDt$)PV(M5MRg@$Ua z1E9)7Pq6*ENXBVJ(WiEd7pY!PeQG;jRn&EZuf2p9K3>(%yAEDAtesiHVhus_*H-J~ ze)7W$J8%Pke{+^>7*Vp0muyjMWMOR{K&>OS)dRFh4}g12O|2`sTGSk~vTtj!{ya%?n1R)~Ncg0)eeorzslcI*at5uE+mv3KEb z6umV-hrtHnG_&tksr=BTz5*T!U$hSX*z#QYQ(0Jo4m?;2}ezzdI5}FqEGAr5=u&_ieYxa`1OL(*aYj*Dl$ybY@}OLKW^mG7H)ksQ2$>=C{3*tMjiJYnwxT^G?R@ z4{(Z3XBh9vN#wE<4~o&N;SAZ6*|9%NGAGF@-|KPp6{5m#%+KTo-y>9Oyd zw~4WPan-|nvj^7-{JRhTmOB`G0N1)!#va5~k2(+GT7m1sxax2faWx@#m-wOS_^dgO zS+kT|{@Jm|GEcz6v{>!y1DX5LBia*W$988H_}}AqeHldA_}ypF5AFTO(MwH|cVtLn ze>G`E326jfsyk!O$==NwinR$zzCMGPNML4y=A1Tvel)4gz@w9C=*e_oA~+O`c>irw z=tzpHLB2mLv1%P-HTYMBe-i$Qxkdh~B8V&5i9@xEF;m^O4*U+;bac;X?&f>Gw${z6 z2dwZel$@m5nuc~ikAGzhXthXO}z2lJ_g}3k`^UX?E;?Pg0#_DyL(Uuzd$y>eCyORFilsYW|SJ&R5?a znRMnj{o*8XdJ$q48mC{FwB7Kj8@*Wm(PA;atI0QLRF}ay#UI1~cZ$V6x;G;AjO z9xESzM^Jf6e-&3=CP4mBZ`urDMCLL(!b2mRfWqEABX3taJK)9 z``IJHdOWz{7J@0AKDHGE?1lBk0hut`#&{al-R( zoc#S-Tkwfm8tq1C53BhlXw6dC5;Kp_s_!#X3E2sB6&ifVCgK-M>IuHXtl1ubx4X@2E$wP_ zqtmR}AZvL^qtobkN_n|uYm2r%+1StylASLjwwn)7HIIK zYmeAw4@}2wI#0Hi)Wm&<15`&me<|0Jj%pUr^5--`=%&@sHRWsQr`0%-Zk$habgKMV zYu?9gJj(!$y?MZhU+RQC;T*GE3`2)zM$fpFeue4LPD+V6pHgN$?3Gy^dlDsl#8)(bR%Ens>;U`fPeRW^4ZW z<7wN1p@Qd+rHRV?``ch|z@7?(Egt+1A;VA(5QK=fQ6IwG6F00IbkMG6YZ;{)IUwyrab?{Bw?P%EidG;O^V(*Vwaqf z5W&~EDq@QhRGT?Gd>qFz^dvd@`BN%mO=$ZUDfK(`oq&8NQ?Aw&up=4GLnfu(f)AFg zmAQvV_QW2RY~YL8uv7Q2WP_9Rn?bdO&xAMSEj}|7wmW2Awy^ZrV)$RQ*+4!n@`oKd zD%NgfGjiFXcs#2&rmmSFzswt%ISXD!x_EZ1FGJp?S@v~iD*qIJI%1)+ zaRjSCq(5w-2>$YuWTk#9^Rk8N+{EjUkLQ^TVY~*<7DgE6wzbQ0|C}~Abm;3?=aK8~ z+*Y3*>*xL=SW5ksZII)E6k_C(^G>|^l=`NlpD^8(=?jvrMf-fB-s&-p)g`V_>FBI>DT^h#DZ)Pc|l2^4TZoiPp}Dw_+HP zh5@7c#)vl^19o7s4j@K0EIAo=*TmnVTnueCyyNg?A~r5>tM*&(pjbNjeJkLHo=HA* zcuq&QmU6FjXOW1T>#)OQ4$5GXQtQqigGFRUCQg*chPC*c4u0iFAS1g1*wuGqPtRjl z7FK1KQjYWVyXw3hSm*gG(e}tzWYR$Q)$oXD8DySpB$@-d)F0A1#L+1eDcm!w)eLzV znA9`L?e4DjSGUQ5O8kx>pJr`OM}Rz@au-E6A^{ULmOk|sbX-xKw3j}$09Y9I$HW1X z@X;WK?eSKy`zf}8m|+qC6gSKy^S^pt_aN8805302r&)tBi42@Dq zg_w8l4uMaHmB73ix>IO+`jxx-%zoa2A$1dv4rj)S&jkRFchgq8W)*G=&wS5}y+6J= z2S<87k98z)xA`OJ8By^|9-YpNof=;S=w6PMGPS0{3tH%xqTj@myUmp6PZ<1adqd;M z%n3$9lyl^0HF+XkZi+((=ogU={6_fi2>(S)i6LGmb#N#FJ0fay^EZYLTv3Prj__Z3 z>sn@1d$~z%wSS!CmLap9WTydgMX`R$&)E&%7|D5dESnXvv@*V0H*gJG3@<#%gOHx$ z)Pd}L{{qMZom=QY#ynA5?{`2R$fGCY+(JKkO|dV10p}@)h4?XoUlWgg2@av0^9iwS zD(~(y&s624MIH49NTbFboLgYx+=3zXX>~ki@n{W2vtl%74a}3xGU!jrE7}z(%q%KS zx%oK-8=`D0;x_0xEA&|jj|n12A14v4h_X?PZ#JTALI-x>WQE8lqUal)ZJ-Pf>fMDg zJy;`0*&TqKRl( z&N+P{MHG?LPD)6rFBH-PK54lnPhd|>yb_}>v_^628=R)upvf7(7(XcLNc`CQH}m5< z-hPR&6IFhcZ+bws3uyqaBfTv(3<|T$SXix zQtp)!*|Gc2lg%V-3}{rl&O`dO2-dmG@C$9M&z;sdrmRCdK~)Fq@RsV)8X(H(4A8Cs zeG^DeK2m6OiUt(LOdK25YjYasKC(Ehjfh5YSe}3fb?k(&r9_N?@N4nc8NffIt;SPntb`*$z~A#Dfk#YLwGLr+#NjNDP^(`_Cps@LDc4Pjs%bKxg*8%76s8c z6?e4fNN^r-SLASqgVC84^%k@-&#w1qEkt-eOJNJtyGV~a*s1Ry8;9e z?O7Xa*SD7v)l*?;Tnc+wtrI=7>h2EWWLj$}zA9AMGuX7*Y;nGSQE;}#gSlVCTQ3-g zf6Zn;o`;JB5hW{?x^KQY(29PAR*tiV%rr`iwT9^EO%U}QVdMjAoGybm)tO)>@O8V`$IdnOHREVh}` zIS6j3BLgggmQ}!iJ#TF^Xm;%LSs2DPNN-`y0#j!&S`jHmn|IXs`a(56*oeV(j_A#j zs|vNWx7Is|$DRB)O22@_7;|VVvVxvM%Y@mAOdx0k;OL;aHzVRT$LPKvySs?DTD_<8 zve*E4G@#b&2&Rx{D0}YnlRg2Sdm?(YcMrbLgm$C%bn>fp2jzc5iY3|~(3?@NRjeWA zGK`=WVnCfn32|}Y!rLYFoi}%~8s8C6I|Q2Syk9g<(R-MyC_WUz+|kjy(gezO+Jz)d z839nygYhTId!V5h&EaTI9;X#F+?ebA5%iw8Y6UG@a-|wi%;0vr>L;XreyEo#gVuY98QoD2=4LZ?}BiJ33 zf-)id(VcoolBy@R+kh>)vl=BICc!vOP$1))T+>yoaz^OoW6CP5GZden%w)5=^VxaE zg;-CruVyW}3_bta0R5NDuD?&jrgjC0LYjZYuqH1Beb@34MwX?MGMBDJ1oXhQ70B)Y zuVG_0VqfL#4I|>fTo#gooi*qix1As@5sbU&pEYPB%VpXe|K23!9Eo|a=jQ=1*Luat z3|h4)Mv_Tovw7O`)GWFPHD5+7K%=HQuF-gN0gc6+Mk8p{c&)WRwN>Pff?r})6KhUq z$cP;t_T_;Jv`nK&8o3x!oR@OR`N@O<5Xg8zn?r$l2{)_)8#3umAv=`pfVHp#bi;0F z7}5n+{67(_@sJ!ucdD8hJX1O1^z)Vk%t_u7x58A;ig8*2D`y$K!~9#U;-oBhqsz&k zXe{etL09sp4z8!lC{rpxZB`a=;=^XF71;G01MOsmCqdXTf=}8igdW|Y*&DPTi1RvY z0$QYsfjiVc(uO2c$Dn0}Oc6JT);G}~7W?`cH#8-Enau|XnyIAW4Ctpd^g~#xM$jS$ z-Kawu?%A{tA}|&8WMho_NQV*>*%L)^x{J=72kz|0$XNLZve=XSo>os5 zdzjzTX#*C!m){dF>C03EFIEVgslh#+RA8|XzxVL_E`Hz7?{C7rOf~|m@mzy;={}14 zR`q@q_s!}(?M2q8_no+3p~2&Rkp_?ZdJSHOUTN^SuhQUgU!uX|UW!#a8=%!4i7KZ( zQR%G146`L>I%Pyw&51H6#X@HxrdpjSaaJab&Y6i~XIWx~)08N38X?Cs5_+d0p@XF^ zY!295u-~ZbywBHqv?#uki$Q0>{8*2!<=<@QR$T!S4Vs;jWw*++PE8QNwuNIr*NMqa^5C3V13&F8(;#qyq)Yrip+d` zT{1zi_!5tAp$hAn*hca-MGol{Jn54{IsDFq=--tiI9r3>to(Qr}hMok@LHJmKQ+O7U(1>XqT0UVV4&Tx|kwqJGll5dTA(j>k^#2iPrrALb=K zzmbIodjNxh86S1f2LV%-3@`qR~CEgpa~!K%J1PiWp8&1sk~xbwfu>O&3~`o%cwtCg^M( z@7=;2HjHIK|I5+;KaXp@p2d4DG>YWKLB=?9`S_?{?*g8q_1qZ!{2alOcP2X)h1EP1XhiE5w~HlbJ;reWJ)(6gKaRA@ zeOQ0AaU{5@$I#`Q& zSdLMiZkLIfBtg?^?P5n!_ZvP2Cpqr5ss%gM#w(gO64PfSMcK$^%l;X%tL8gX%#VB+ zyImzG=qj^$PT6CC51;n%c~1a4!xAFrO~=+C4yM&=JaI`I)$1IL8jm$aS@cHAQL18k zhskrCWplgrD&`JGCCZ-`9uvJ&??D!cXWk~Qw#i5J<;^P+R*uoa=*urgchooo<-=w} z6Rej167CX?+Xg&Nj>qI9Os@iy=oe+tQNP$9SwhSU@?%hr4dNudM}lE!vd%$~lXx%B z*~r*`HbfR8-;eN8)0`~Zr1mOh@&DCAFEY-HMd7dY9v=tjMhE6*SVIH zeBs0{vgE+U2zCx5K6i-w@kp{zN@Z)YTOw&gL?94GU3Zt{2#2OZcLuE`(9IrEp0Cjn z&|1?Y+X*Y}2ebycy`VMtm2;HB8VrpX!$IT9z4+oLQCy53M6uJEN{5UrzhYQW(L%~| zHP?jVn@P?u-eckl^e^zlX#9R&n6DrklorF zw$a|q5Tm#&c4S?8p6Q9Z+*vX#I=M4-!bh_Qx~Um9I%U|Ah2v2@GnCVFCC;!lI~uSH zBslzY_Q@a2 zDUEYg#4Apfg;TYbdw+@AsZ?t8iIKopv|yKO`z-jG-j zG1Hi}Rvq@IK4EhpeBpGmis0b;M|?)}Rfd6|Y>sp95ZB3yVe!99yy}kzSL1%D>zH3y3t^lf ztAqyt+6o@CA$S8y<1c}3?CYQrx}lXif$3IYdJC9@UP1gfeh4t%rMLv7T@KhW1|6i? zbjZVte;e5yKmy@8#&0*#MkirRsUDHgnSwI&-lNrN(;3#3z5|C!Gd*n855bY z@4&y{Mt1i$mvmC^-1p8tzzfP!vDtWkFbDa?DUkQPGmwXjlZT7A!1u!V{_edwF6_R5 z3p&mP=DIY#i({Z2Z4tOIs`B%icRmSC_h~-jd~WLQgeS5iFa(cWbsU+>!8_G=GEVyw zZ*E7~sEJmkVB3f%h*(SzC1y4`_P=3KU4y>^un?Rj{L5pVcynv6{tdkT^`PUrTm&dH z=E(KAR_!yqG++33GMmPPhBo{ubYa6^7|pTO_(wa<@87oHM1F63N`;$_A>xqi8)^viMPsa&lT@f2&zjQHdJ zk)8Oa8D*7h=RVY6k*h5JFiHpbwVME5Z zf*0NX?U1h#tT>~P1N!R~x2oe&iKlxo3Zo&NYfJn_^z{aRrz(pt@|H*zzo)h&WO0Au zD$bKAyd9~yA2ar9ZH8d|>+B()O|-|Vqw6StvhI+5&5-wzfCn|#(>NJuCa&|31l`)G z1@H}|T#LJ=w0K)$WxmDO4T)uVTI#3uUJkf`W3gZCs~T~?(7%-W3T)Tsuw63++v)_q zT|!!m)4!beUhEoO2{U>V=9VJtOPp4Zct>{2p#=3(}`{m7(<31b!kEn>a80kt|I|Hbhwf`7Ui5B~Oq^NR^8 z*P;B%9AD?5{83&`mK{z@gWsgNYf!$Mm+LW)npK@)MCqp!m#flC^Ll4uEhrH^rIqY5 zPDuvem(cq9F}1IksC~T_QbB7eAE_X%*Z&q@SkU{r;|)39)#rHElEb%N#b;IVErBfL zIWKrezNV7cEVMIQ<D!1W$%nC$1X+1K#>DNWxAzxF!bFT{!BYe11$xsc_8{hm9pCV1(lb7L#G z_P8anLWQIV!XH8lu(KfCgNEF5+g2<(n&*VtJs9J9HZX`fi8U*Jq$a>&3 zVZ5|hLk)bI6nj=rcJ#vfS1lnH|9YYdxt;VD>j1vPLRpQK@%wPUN7Hs&u@0zjc;1Wf zmtvmu5d_aInH>8MSf}YgX<~9LmC-zahLhAX_P@PFiI4Mn)rooa#~78;4(!@^2rCTs zz$hh6M(aLwRj3c1^I5TO%(1PI-Eh}!fV!31f=xKG{boFM`fnl4x&0=8UkGbch-}n3 zvB|MPPDL50ctNG&TFj9=9frge>dehkVZxjr-MLBABq6ePMz)tFh+8$3JBkx)MN^)t zIQ_I@tpR6N`_~aISh0leDTy`tJ9+HV!bl%12fhxhpTdSLi7mm~vRsV3G540DCnd24 zyj_%=vGwX(u9IM^&yLyfKFSUlfjMMR-*Vd@et{XtRT{xp5>!qF#5hwd1t&^SZDbMSdy5Z_nB*5P{yd?%P}p4@uyFL+#^-_K|(!E*^{S;Vs` z%G?p$gNP4K>tbXP_v|7cAEXU?VV(nr-$-{jcuT>~`sUouIz9FT^002fdD6n2wTJ9G z^lgOpFTkujNq$fr;_;nQnwQgDLF@%B=3sd1)RLfw=FWlO{g~&J{erOx>EPd?yUviL z-W>pMqBz~eZG+Hiwba_v&+n=j_UJu;;Ioo;)uvb0ZK@Ap%~KeM7w^F9H1u zDak+Ifci3Et@I8v&EqP@4muA_VLoD7^i?4{A2sWpNe78jcy6?YOrcm`Na&Jca3)GJ7^gP|P)lu)Y~FKb2<0+Ujwy*zONUw@um0!D4*W{UX(?4Q0rw)v^En5XckWAz|B)QK(vb%5HSD; zX5sm7!7`l(bp`a9IS>AJognxSDBy#R^8s1`IcGvni5u1&H@;NR+85&!p*83?&DiG= z=Pc$@PjW40?!{&*Nxqn=bizaUM8!8iY3-mW*yNZQ^bGYxk%vRyD3~0pgk3$O*LAS4B!b2$PQXUfolL`K^MXcACnvBrlSbB7eUdXxI~RdlbWdwG z&EUN5rS%-|_-Y#QRu;S?UpBqdVDZgB%2-FqRE?x}&P|a0h`&(hOv94IH=D3_k^CP) zE)mXv%N^b=&7*_R-iY-@ykAsf%=vtFM zUCpp;YZxMj<`H~7z*^qdvjw?+!Nd_ncc`zF)k!NZ5OZ zdE+8*Q)$t11%!8{EfEfWw7^Oh zfANB1{O8AtkyFgrSKtz*y=fSkIf(sLSQ*b-jAcM`J`(#;cb5)N6}+-Jo6- z^}12Lew1JH@gU6~q)`bk75qu-IMtf{J_6dTh$NGDjqWVio6)`i9&OsC@w+*=o5Q_7 z(ID+t(vYGVShcvl3>&YCLs2gUCYgVujr2plgfwB^V#Yn4x1cj09?4V8B<$7yR^GBy z^Z3PiTlzoBTS2dO0^41^ z_hh3=h>YQ^IIf5t^Q%5S#IH0ik`=UR%`b2K5SQhwV*gOxuw`NKf>ITPfw| zPt}+;Gx^M@%+0Ba+?*=MT|NRq`(muuchIkhICpFlv!w_pars=qJYg;Pw~4-QspYHE zDn?kI_`tC`KQFL@uHW-xFxHQeFzD2@zg+4gNcFB>aQpuVk|4;Wv5z{cN_Pf@};;_n^Na zVVyT{eK)Gw>b3ky?`Zdumjw3RXNjID&j=wMN%r6O)087Xci*D#=i>TLxMCl}VXYzZ z{u*5KRlMQ}(E;EoQt@K9#9<>L;eXRGKa|7Vr(%9^3TBZ zcjoY3rQ+?Ff|v4$D{~Z!CqZ$QiWlEI;&?}SsKQP=<$y&T7yvMOQ=%q7LPVAj7|n z#*pUeOT30PBzzAVe(@ymH|Ov(oYNN6*g=gwM~!$A(DgZJDHY~t3n?oDc@Ky?inUlf z^CiyNP-gia*iGxy^_%fMp*c7NjX8vwFho)0R4|hU)sYbWQbv4)+k6K?Lzsh9hWJ5O z2PDtnqW#qL+W%5eyOCynu68si>$LiG&ct}p)}2{`8OgOi!t0+bXnmxM_D0j&-B?i1 zgm&}w^6gTYu$l6fK^AlJgLw7p0$$B>v6FF79br51x0kHJFT*2Z#m<5<>sadVCg@4< z%m~{?^jbVq>{L7x4`tpng7^nu&tv#)0S0jK*I z-j&#lZ?CYEpG75@2C~0E(nNkuoH{O) zGd6Wx)}lvZ&OHc^CG8xhV#c>DP=~xy^h+LKvCk0CMv~va^g8(+40I>=VNSLDwDo$r z?ft>e;=BO$#ftF?2Px{S2d&F+H9~9ls@6v*WJ!$V0=%J|&iS}j;M#y|DXvajDYujU zE(2kx$CWVHxir!^3JhsT<369v$eIxtDKE{{V_84q{1DlRVj`Jt$IyfX@se_G{V$dl6C4Wc~TI8<+4s( z#7O5PsZW)0t!MH!>TRKn^O%l0#zg-GKFz;qpE`F^U*_fdB4)iiWX<=)p!I|( zr=Aey)Dt=%Mm?FO_Jq!RiJs)f95YkQ){gCBwnny3?Fq%J`50l4ruSj0jN-d4IT_85 ziJ)K8xP@b3%lDv2>j8}c^?-UpJ)oXY52zzWOFq?6kzH=fw+^2V+^;epq!{ls!t zd+cghC|Ad>fQ51eER?p`#)Pm?PGY@}(3&4&spPr!3EUyOkbDGWCwfgcLLu*Lv82YbznQuXr7j#yM&`WC>YAWV7^+)0uS5Iud2S9M>!jv6gE(`d_l+ z7<<7Ru@`bf618vkBY1`ua} zEk@j?zRYps6m#7u=iM3Uu*$v%A zEpqOvnkyWl)`+?xP93#DEfua@g}4PT#QLP+)p()FX}CbQ(y3_PL%kJ$lV0oLSJWO_ zrLX*zKGIr|<^B)yCuw_AYtIK!P|n)}1^Nry`Y>KjZ$tFcg1IevIhq@BWUZ?l6XW?o zqgV<`XcT4LSNL~c@~w|d8%bIUvj3s!#X^~rFWNp?A&{N|F4Jk(3%N|Z;1uXVfv!-N zrc)r!J!rhn-bS?K?NPCRpp*XTz*_9*YkbIs!yM$+PJrwiih>+dKA-)U3+9c`DkUm? zvM!8oVvwYX(cyBjP-@+8#H1>ytsKFQ@Z!4);wHBXAe37CA>SWydNbdryAxWU(!ng~BYS=n z98N=Pt%m$itKx~QDbm{Fsfj;HyBz{@5r2w?aI&1sfR)?V zGr+F~{$^C&OIZ2eHm~P=IIXhG)|SN7Nc)xFvOx6gm_?{)=ssUY%%Df*^M z)#FR0bhf85LFYs9p1xFx{W`uAs{NH1H5T^X`$hM;18#Wu^|2X%3J1#Ym)fk9d4jJ+ z!Uv7B#$n{x(f1m|kao&{75>H(i2I6hxDZEWf-;He>oD1|SF-r~d%z>5R^xBfelV^> zhabmZZ5O(ea%~AKt*~_R;@(6W6tVcqVBU4&9ocEHk&SMu2P_m%84Y&2OgQ0e#e2#s zA~^hQSbW2&614~l`%yqKeu|Hv42X&k@jT%noQ{%kt_PYD7DF_6G`Ozk?w;`={$BOo zbVz(_TT0RSb$8b+9&5)AwI?$8a*&`ZDQ9UP!8zeQUIQo^(|q=^3EzRybP4f@GIO=j zqcdVcyNF(q|M>=ZNeOx|{kO=DiA|SK|90-CP>T z24S!s1viLCIAh_`os=+kWUED0-i+c(yvgTKQw~lT9HV$t6ka2Pou%-1?~n^-;q~Zm z4zU#e?i@-g6K+7#zK?RD2=YI8)|eqdFz@ku@QRO_=rj3VC|jHU8cjMxULz?rHcl|0 z5x=nTxb;SIL42W1kU~3}EH3IBNlBWdzkpNf9O+ulsnW*{G%LCmap|mytqr<)dn{!F z?UJh&XQQb-9fz8O^Lhkboyf!0(8)em$rL!93K!1hnrqY%O@Ey>{GCSXrAnKH(`LfA zo58UDUEOD(}HN#pM&4gtOxrv%c70#SeO;N@wQ(wx@hLzCyekdP1TVet1| zNEYZTjp8gM=^?lHS^#E*)^nkc8gSx~q>*~9Q^$@ZA>FkKa_8=<#CLmN3jTn2n>xq& zs^@%7cQx>_sgKp*YoYk6UckmF#tBNIjgMHG%ZFBb4zFD(AL%Y3ABED3a|HZ509t-m zA5s3_qWyiGeO)>_tX2w{bL_^GUxsL&hPx*&dYNS_5p*2QL+u|aJ2ta$XLeZ zrd%{@rKZg0MW~!zRiRnyme#9ZTA@ifsvbbg2laZ?g0Y-jb-)f)l5pq7g~|4%`6{tp0X~6{rh#1H)(6P zA>C8b{vCvCqlA@V1DH<^$u&dbh%HVM?s8a(sKJw?iL&iiJ#CBZcsUirU38a_794zb z8`AeQH;%f1735Vr#~DMs@OOOMJt)^oGltMLxVf6UmG6+he$dZM*r6U!);x^si)*P1 zmgD3aCu}6&rJ|?`2q(){t`J;`gRSrA zro>?EpmtAikCzp*0aC&r+yK2U%L@AC%#D;%LABp%F|2^nzFl(Pen{E^!nie|D4u(- zvvOIUXp(^@i9X)cNa?Tv?a4DXW5*)x5qxJ1sYUs<0XKyWp%z-<$uiUtq#Q*G`E9_o z#88eTWFIN6!v0B|pTM?Y|4Q%}&ThbYlR?mmHWZxD$2t*)UDU99Du~76G(t=7s+il? z+G6oi4j(9KTuJUBr||EX)~8##XfSgVrP6%r#1h&el&)xR-^w5{k&gGv^D1fIq~rg9 zKBNp+@__g8Sm(W1IqUV6!M-5(fvR1GgcEuLy~_MA=HyrB(DVF1WnHPB9@3xIagRK7 z%F|d=7=pHHEg!;8Y`SPK|0vUf`h*Skhq6KxR6J?kDwQilA1oK=I-%S`Rc?{N0|O4^pHb-$pWSe4F~p zG?!X!h95kGul=t=$u{FFX@B>?Hs+*8XF27OdeE)En;N(bx**x^?{4E)L1BM4xy)vK z4ri4YhHXZBx*(baZGv-*wlwxLq+vruSxa=UcH><%{~yu53nbeYmTtE@RuV! zN7MuCV6R&3_>p^#5Qhg_B(@>BKuh2_oAG)o1iTz?;`!dW^!6X4Hk&aQ``AB>qPkLk zw1YBCRJp^)KuK!tw__q1Y%K={IzhvTbI2ZJFEyhrq@k6dh@et~@Xz0I#M@U20XK3gZluPJtoDhZ^r%pZz z8v5Pj6DHMEAawSmMNw|}9Fr>j4wNJ!yJA_2vhI*rDY-hNbNuT^k64_Y3`(As+QepT z0cET2jk2@YN&?u7A5A8MgWHrwD1%0TW)9-}iJ%8`PyqP8hCS&B(GVgroD5QH3S$5~ zKn(8%zP>Zb@2368fiwJoS*68n#?!dD@*xw~yzhhg#?TwY^%IlAc>J=>=tKQkT+=P} zP%z7{Nw^sX{-3PJ`TL4rg~5H(H)Ah7OZ^R~rvl?RLOmT&-_2G*irb7l%z^k(-zO1r zeQmwT&2jjc@3WVL@d&F~pKANx@9$?^VQXu&!%K)1(2evKw-0G#8@O6^I)&9~fH;hA5o7|AY ztyk&?RZgQ+NuIBVe9=E3*ZypuIoU#b$bGszqmuq^0*SbVUQXx9OzkK&g-FO2&j zADISrqSh$+zXWlcVJEtKu-6T=@%!aIz};0OLY@IYBE=eW4Tr{aLn&+Gis7iJ&Ds!CLN9 z0aS3oHlUAC<-Zw{J2)727GdrlzohZ?a&|9w6k#(?$~z^koyYUge&QG3d`Y`j7{@^M zm_;&nPV$sE$aw$Q5q^)NPWo-b_hJ8ZPVL!IwzJJRnzR|;Nb+_>Yi~14RrD2-wzM$5 zVwT!G$@?I)r7{=wPPSBKncIvn%iD2s>BVMjPolj%dmHPA78Tfx2dB(iDcZ6bn~`>4 zTL`v4tc@w@KXsM#l$S~En&_Z6#PvQ&)p3g@+){dT6ryCYl zT{x@G79*TJ^4^0iB_?63+l=|iP>vj**>1SLGAEkNw2>|DDBQN zIU`G}mA8;sGoXGggdC>bmT}z+E(ithH6?B+ID{B)m?9J~3}U=1noP=-;L+{d+JcM!xyq3Gy8^0x6U;AXzy4@+;#ZeD6Cb=h2qInp1Ni z#o>FsHe-pj?vkK)&Z=R>vD1#VQOe=hlaiZF9Zradi=i_2-i9eKg|=lODmEed8f?5F z%yX#uq%2%q6Uz1jVC!~)5(aT+`Lh+M@$yi&8~*xrk2iI$;kk?CKAz5@ez6WE_2Uqv zh8Odxq4s(BIwyqtd0l(v{KOlXZHLl{`r4)x}%FQ4Jv(9s89yWAh?1{G${Mdl=Bd$Xmua&iO z{@apCkPjG_2&0=C8hU`I%kFr2CRRzXn_P3s)e_#h#kG!bqCmf-4K3-3u1z8s8@K9^A9%T&BO}$Tgz`jj#?Sh7O9cH z|26y(oU$^G5h9^fbhiMbTSbd*xW>9kDeO_YapD%zWqb5`^e9tvKW8fbU24E?(#kmL zN!V=-QfE=Vi=@b^i)P=^+nHBxS=H7SKl$_VoJdRdDIe=&L|T)Z#6 zsTun(H0tN;B5M#vC=^}clpkP=CqJzMHdaAL@GpC$0e)dTG2w>~J1YX~-Xz|cvmmm< z?EBk*Z{P?2XzR2A5A{LlsX+ed&62A=5*;$J-P=nVJo4gI(kR+|wjR$s?-I z2|MW`7gkFq(#EnNaR4@#oW12}G8NY*{rDo0a^&XBjeVrCsdK|tZl{?Wr$Nfx3$RC; z5?SgfZI^D%(Ks^pO|~q~BU!Xzm1p(-rb*%q`Wy2;ia*!O{&geNq6bPN_PN!!^QX|m z*yTb{7h5)4-XWHXM=mopAsz>XOam1paSI?h@k$GuxU=v^UbA@2!XIwr(_wdN1xgo4 z$t3Mgq|Nf0x)Z``nLmSZVLY6oKJjDj8Z*uKcAWFvke?92LtzRQs$~|*TLkUAl zy%yt35BK5*oTGlEO6sF-`~s6|u8#a&fHYFt!YzzXrLq()VFQfnY$mo`$yCyb)i%uS zB=S+Wt?JTQVU(uc$6e$~|4_D2UpS*#DxD81CDlwMLD998X1C%N6y6t`iW|vU^7ozO zO!@n}q*MO>Hp$y#Q}JkWdNWrerZ*ShuSL16D=|ZOoq&nBZ@}AvH^YPSdog!Z80RO8 zr8H-)ibm=#Q-ZdZTW5B)mQM$b2xA;nNs6AG;4NCBDjHFCEc=Y*>v%WdwQvy9@4-Bo zI8HO|Vq%CE&MU}@jf7V(MDKh1vBT6_( z`-Ht!x9$`pJZvXrjLQ2#S+4kpeW9!gTKgf)QPHO0SRoHS(lbl8GywG}Y1*Qol{JQ)-$VL6L8h~KZ2|iIAZ}u?xHFWbo*U~%nhvJ3 zEF-#U8S&T3TReqN?a6{DTcYxkCmrD1u^yh|H4cbiA0aF$+d>P5?I(?pKd;uFHDN-2 z3>;$FwI19gWsVqh&wZSmh6O6?8}Ati+=%uw#o|m`u1T_fyl6=-2FALnB`oRVyrNY_ zQ(84RF%|0JCc+0av1CXXkQ3@w;5yOEUffM!0U=_?HcPPuk$5j=WJv^D#(Hwm^<&K~IE>vWB|e;zP?;PHLEI zo1i_R#!2L$skXCrN!iY`*Ugr;b6&=FK7{iLDU%e(ay`tl&AHB{Xq$HM&rt7t*uu7- z2*>MiPn|JGeH}^EuKJm$iSv|O-f78p@VjeR2_>KjaND%1l5^?!?_rVWVYD-+*`*)b zwz5R{Qt>{HRXgTKA&d3-zDq8yE~Vo4$xxn~?84fo3Qxtk`y_;Wbty+UvrYI&yLs}C zJ!Wd*8-J-yUQ=GB3I1mi!5myLhVo!o`0@m+!uyNp)xZ#ale~tMm zT8EsmRM=n%+|hCN2utI-rKfvBFBS*ZT7C73ghSDf8o3B#lN|Ao7SybGenJ?(O1z7k zdM!Fj$N%w?mHN{%HEXSsbmolgl2qh4la7Zkk-}IC?z%{qQJaDeNm<0WHFxaC$i}5J z7jJATfj;ZQcOFMDFN&QR#-0h@Ci#5MxN8_NEBq;VsHx2IDzU0m8IoF@A=7a795G9- zxY9BiZpv+YI&SAq4oO#(1=B`_QG)MksoC?QA!!BVOPf6_KTn!{XsuxSNynHUBqt?d zS-9Jeq4l^m?#wROo1^X|^nqo4@P2SNT5NIH`ovt=0)C{nj~I*k8&+2LX1v@DwQsGJQjG134!H*9+;JP_ z8|HOQ{h#ocvDfaGYeMX6k6wgtRX-mc5NpgYRsG$HzUG0x=swuu00*^VHDxduarsNy z^od|ycRG%F)ACQDWDjO9NP8-uqU?`{tsJASy6!A3-++BfY7JqvS`9brA}y=BZi!x{ ze!$84A)Nt()q41`4=3VE1{FLD)3E(yd2W#h?!qWQuA=4E06BR}kH*xHy! zlhRu08`2PYigr@oi^BNFgqoS){j@v}{0FJ|^7nhGdCkSJFXx(n=dKqO;z`^p?wyQ3 zjhk0Fc2c&JJxrTp#(Fi931SxIRk`B6N6NjgqOR}Ywd(DiDZF9$OChhPj*SZB9aFqV zit`8b9Rmg|w*#}Qbk9flE;HOKb5P2vIhxa4R?&t`UC#T^X;pCNYX|V5%4GU? zFBb3F@p3O(<`R1@7Vo7CsF2UQ7mN0=UEaE4%@|(Oba&Gyn?BQI3_FhQcsU*SCOTer zzA{I5=*88>>(4Yj*L0+5sEN4q))}u8S6Te9U()eka9u@9#Wz7tVE?1p(h%&_bo{58 zyJNC#ogs0i{?ZPZsC*I{=3;yqWQJQ{PjNkDb~8`9RW0HkWfxwaBQ;;{SLXappS0Uk z@g1pVi2r9SqwIG|4kUF0jC?#p{LIpgb)BQ$y5uNb=N~%mGecODhyIhBq09f^Kj>=TBO7 z+*@}3<{dT2&rt*Kd{E=y{LwjZ z!@`s0Q+K)>Q3`z4yjg20ZPir#y~$)wO-k=kV!XZ(cSGYniFX)p81GwnE&Ct@ZA*OA zhXHwDf@i;hO9^+Y?nZr>CzmpPNNH_z&b(EhC*u}y6oK3xj3Qd~SqK|%bgyRnaIeB7 z!`SDet|Gvw+WOzXMIO*TsX2u^ui5M5ehbDk8Q6w#F6xlBsG0Dv@0^ghh4Q{B_NkIC zqwaF(w;`kmX=QRI$OC!NMZ>?OruZ3RH;LH| zLdXz)nL^q@@0;t8q~9UDOv5k_Qn`@I4e06SeLt;`p&pqBZdp1g2v9q)*Iv2uQL}PQ zAO^M!@V5&oEQ|wwz)IL{u;?f=)_~`FkBUXkyJz0D#q+J=Z{u4whx9}Ao9l$9F#m7(H`?D5XZ6cO0zTo1y2)%1d zdTq6rVnR57Sbg-mW~V6Azy6X~;uw3(XTuQ)s{>^(RlnkRCGREI+AsLJn+C=HFW^q} zefE6^10vj9Ua-G#zYXDSfj7UfSX4ak9msnQGxnJKZ!EQ;j4Dms_-m}_22=3{hh(Q1D|UA{p?Sb*l-P; zt=8juJ|NDPiA~dLPAw62nDMwFX)iB|IDLL?H6Z=wqpJh+8V^6r(~|NADuU_wm(qtH zoxh&vz%V>-a8djFu0`6`cH5zUbw8`w1`nY;+o2kff6$9j!QqL+y6_Hq4r@OBP{|@~ zEVfkEvJtgJBXyzzUsHZ-;^(p9ribu7jB)fEFXitm6OTPQTU;wV_Bp3!z-F2iS&iM= z;}dmSUAtI34Y1`8*y`qK6@Y0q=fQlA7dqR$wVgYQYY*=%{F~*X3hP+5@WQIKk>@?r z_8-N~$Tec6$UlI43e%0HBJ%xcM{wHUSFvW++0L{g@@y0*PWd(lI<$i4T52}BwwL;} zx3$CCyxzlGr&TWNYq?VxH4_h(ip2{emHM0Zf>WD(1<$p)ycH$A^9n6r6@0aQOR)yM z95)hA_r9$!?b}{jU0<~Hqi4mEIg#t4w&gFyZf~yChut>cBdg~%-Yk6D8?nN{k}{88 z_#~hnpRvCn+7@_QgB{rD)2jMz#@J~a%3K~P9L!tpX1b>^vKcShU;WYi%4)HsPZR)Y zb+&JfH8w66wu(X5w_}{$4Pzh9bgx_3mUp5Yv|we?lKiux>VJico;nc=Fs*N+>%Cav z^J0HJOs?YQ`~w*0yjrlYV9-|kW@PBmnFreJ;;oxvHt*`d(o8x#(;5AVe?fmg1OE9o z-tUr+@GSp@aKw*ZBW(M>tj`EKh1dr^8k>i$`c+zE&D=h*6l3e!D$voOJ?~VNo(FfO zZuea$7OZv$ZV3BCW38vJwS52WmHJcm>bEL|?Vvc|IMi74(%Qz-h4|9Pt1s1mql<<4 zt8pT3QG?x*C@%S$|{j% z84ARhxc(8A&{Y=MF#~HCyM24fAmu?I%5`h&py_L~o(OGxR;`o`1@w|y^ z#RBnuTK&tqz9UwM0U7>d{9Pekhak?}dSJzzvJ!2cUfXN){aw_7laHpCO|#E9H51ZN z+>}3dldoXlzQDZR_U7p~S?d#7$X@@{M&%ZL8Yut?jK6)5PBf zE}nIKq$uLk#|!PJI%QwwovZfQR@L?v3=VpH?S+FCLhPS*z&=>?-E{nXs9*?GV>OM%F0?6K1W4>UGupgXupz!P80iFFc4Eij* z=B=W^sD2>u%9u+Wlhhzn98&c2V%WC)ZM|q<(EWVCIQP#nu`mvP_yPFfHN3w#@&(sE z%=bY{to`JwbBoXU9I!%Zr z#bM_HAM6z|_FLCt5Zzk|oTLCh?wrx)YYcfa(R=)Gz;U)h*IbVTE=F9?vA4S_v_Hh$ zq75l+;lqJTXXoe}T+iT+a<5+G+Tfa_JranTDd%XLAjzKrL{4a;Q!!Oeex{sGtwsBL zv?&U`n>d>9`&H@J8y(B-!gDmH)R|Sb*EowDk{6!)^DsDPI=JdhmO&o_#^OU?bqbmQbPy4NFp_U)*)W3jFZ z3AK$!ejX#-zm>2TikZ+vV#&0~9N7K`al3_AB#w)v`S{B3PTVmTj|tC2{X3*nbUe6g*H+X0!2J()>MB?~u=T#)PxNkSe_*Q++qeEj3!^BP zKf9y7S2rVA;HLW@+`a|j_dWQ)rp_H(w{C~KC3xS~dT(`geRZ{HK{;D@v_J6Rj;&%t zPy6=mTepafTibgcKpK{}xqczDi+jx9g|CesoMda^x z3Wvjd?fAu-mV9rSDIAucZidtUFFEgagugIPIL79x_cVT^=6muQ;jsL4Go1czxUF}^ zwb)ZpkWNp>^wej>Cq&+cjdv^~Qt&XGpJDyP46jkaGJLvdMf%5O`r4fEAi{rQhGR@B zA8$U({~E$y7kQgnZr|AAT_q#-P6_|m28driYa$@+D<8YSI5_)kxLTS57_ZqR;@+#J z$rDow*FPjpNlrNrTrCaa_k2kB;~x@!;6uW{^&#OF2)iGC_Th(*AAESX4A`9>Pp41B z(#j`#Qh567idEv`y8f)k)zA=&#ayli8Ru%)olftzdE9&=m-D z$!rWcaq#%@gC|s6`7C!$-^r6F`(&97U0q!bE)*(#x7FTOU0vO4M5XVc&WAcXJ3kw{ zFifw@HQo?w7&lYy8IC4WiRkbiMu|N8tW~L1v+U>^Jb=^Xa_u%@Lj`yQ{_}Zge0)6Q z!9!2~h*sA#GSXA$9O2&6Fb1qXZ#~1q!>U9E zEbd8RL!z2MVQOgKl0jezx^*q z`b|h*8*#d-yGCUCx}Ki8o##%T+({qstjSRI2dVhDVC&++FCUlHimrxqgTfzU(Q>nN z`uG4DR#K5|tBNzBMjxR(&FnCs{*CkRUl=j*?yBn}LR}Koh?7Z2R7vpJ8|-#7rL(l5 z=VZ$1ESH6+fZNNNxH=8K5v$CUECp?nDf=0oiKA<`-R@L0s36QVNjj_sNl1VW2oLoD zL0r>E6qQL4-f@2AecVfokuJUw+XPPPF#6)eQ($m#R_&RL9UhtOUm72vH*RjPpA5O6fCH?jvz=MQN%W?_N7K1M<={y(o2IRa69yZ%hio$y! z-6W4OYyU{fimU6{q7mN;XNcR0g#At_2~lRxPL!!|1|q5>np7L?b}`G22W>_sr0hZm znki+nOiDz*lRAC+bf#hFP^2mOBrF+R!^gP(3^WQBldr_Non4t2wxPGwY+rG8^<^M< zMJWo951NqETGnRDUBt=`RQ*REdN7M}cJFSxQ_;CdorIK9R6Yx>>BTEaiIRmpWpb4a zho@Ioz4M&>nffOXu-J2I_<#C73wHk8l9F+mfw-2wi{G-tRqAt-Ws2)PE3g zP@nq$!F;Bi&j|hxruY*=W_diMWBCZG;y)qJpPwWv$4sp)tuxUOIQZ;0o;?^)0){#a zZTxfEXSM9inKP0(%U5*eXuMR1)=$xJSvE-Ohm0@P(E*ugNgL#oPx{2eNIO;koj%>t z(%%B{CQF%W7mS$p1SMZxU9L}vsTxm0M(HCa^w;%UT1|>l{7FIJQ+UdJ(k%pY@loBU-0H z>V_3~6r3kcoVdvNixO(+n;gsoXNy)XGGP&KAXO6Y8#3i>!27CIU0s+OR8Lmp<=Gol zF^XIeeVGP~>P`4|*FYuonb}173iM(6#0llk(SHayeVQF;rEKVO+D*F$K_hRRzF=aW zU6|uT7xwh^^<1#>DI&3a=)xS0mqT?(AiGfE1wPelJ7p*-*Zy=(uF@?87&+*EfP^hGFE9<{k0*KV<%D*hQNaKSBRH`=pwvV zK3ArH;!DD@=&!PG_zM5Ef0>PAy3JSk4_)Dp!e2L>eZK|wkMRE6RlDMnf_nrqvhBCo5T@u@LfE2PMtEiTDCts?EeDJj+j0G diff --git a/firmware/PCB-Heater/Debug/PCB-Heater.list b/firmware/PCB-Heater/Debug/PCB-Heater.list deleted file mode 100644 index 5f3473c..0000000 --- a/firmware/PCB-Heater/Debug/PCB-Heater.list +++ /dev/null @@ -1,42014 +0,0 @@ - -PCB-Heater.elf: file format elf32-littlearm - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .isr_vector 000000b8 08000000 08000000 00010000 2**0 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 0000f544 080000c0 080000c0 000100c0 2**4 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00001a14 0800f604 0800f604 0001f604 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 08011018 08011018 000300b4 2**0 - CONTENTS - 4 .ARM 00000000 08011018 08011018 000300b4 2**0 - CONTENTS - 5 .preinit_array 00000000 08011018 08011018 000300b4 2**0 - CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 08011018 08011018 00021018 2**2 - CONTENTS, ALLOC, LOAD, DATA - 7 .fini_array 00000004 0801101c 0801101c 0002101c 2**2 - CONTENTS, ALLOC, LOAD, DATA - 8 .data 000000b4 20000000 08011020 00030000 2**2 - CONTENTS, ALLOC, LOAD, DATA - 9 .bss 0000298c 200000b4 080110d4 000300b4 2**2 - ALLOC - 10 ._user_heap_stack 00000600 20002a40 080110d4 00032a40 2**0 - ALLOC - 11 .ARM.attributes 00000028 00000000 00000000 000300b4 2**0 - CONTENTS, READONLY - 12 .debug_info 00024ce6 00000000 00000000 000300dc 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 13 .debug_abbrev 00004dbd 00000000 00000000 00054dc2 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_aranges 00001ca0 00000000 00000000 00059b80 2**3 - CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_ranges 00001a98 00000000 00000000 0005b820 2**3 - CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_macro 0001c402 00000000 00000000 0005d2b8 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_line 000223ae 00000000 00000000 000796ba 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_str 000a6bc2 00000000 00000000 0009ba68 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .comment 00000050 00000000 00000000 0014262a 2**0 - CONTENTS, READONLY - 20 .debug_frame 00006ea4 00000000 00000000 0014267c 2**2 - CONTENTS, READONLY, DEBUGGING, OCTETS - -Disassembly of section .text: - -080000c0 <__do_global_dtors_aux>: - 80000c0: b510 push {r4, lr} - 80000c2: 4c06 ldr r4, [pc, #24] ; (80000dc <__do_global_dtors_aux+0x1c>) - 80000c4: 7823 ldrb r3, [r4, #0] - 80000c6: 2b00 cmp r3, #0 - 80000c8: d107 bne.n 80000da <__do_global_dtors_aux+0x1a> - 80000ca: 4b05 ldr r3, [pc, #20] ; (80000e0 <__do_global_dtors_aux+0x20>) - 80000cc: 2b00 cmp r3, #0 - 80000ce: d002 beq.n 80000d6 <__do_global_dtors_aux+0x16> - 80000d0: 4804 ldr r0, [pc, #16] ; (80000e4 <__do_global_dtors_aux+0x24>) - 80000d2: e000 b.n 80000d6 <__do_global_dtors_aux+0x16> - 80000d4: bf00 nop - 80000d6: 2301 movs r3, #1 - 80000d8: 7023 strb r3, [r4, #0] - 80000da: bd10 pop {r4, pc} - 80000dc: 200000b4 .word 0x200000b4 - 80000e0: 00000000 .word 0x00000000 - 80000e4: 0800f5ec .word 0x0800f5ec - -080000e8 : - 80000e8: 4b04 ldr r3, [pc, #16] ; (80000fc ) - 80000ea: b510 push {r4, lr} - 80000ec: 2b00 cmp r3, #0 - 80000ee: d003 beq.n 80000f8 - 80000f0: 4903 ldr r1, [pc, #12] ; (8000100 ) - 80000f2: 4804 ldr r0, [pc, #16] ; (8000104 ) - 80000f4: e000 b.n 80000f8 - 80000f6: bf00 nop - 80000f8: bd10 pop {r4, pc} - 80000fa: 46c0 nop ; (mov r8, r8) - 80000fc: 00000000 .word 0x00000000 - 8000100: 200000b8 .word 0x200000b8 - 8000104: 0800f5ec .word 0x0800f5ec - -08000108 : - 8000108: 2300 movs r3, #0 - 800010a: 5cc2 ldrb r2, [r0, r3] - 800010c: 3301 adds r3, #1 - 800010e: 2a00 cmp r2, #0 - 8000110: d1fb bne.n 800010a - 8000112: 1e58 subs r0, r3, #1 - 8000114: 4770 bx lr - ... - -08000118 <__gnu_thumb1_case_shi>: - 8000118: b403 push {r0, r1} - 800011a: 4671 mov r1, lr - 800011c: 0849 lsrs r1, r1, #1 - 800011e: 0040 lsls r0, r0, #1 - 8000120: 0049 lsls r1, r1, #1 - 8000122: 5e09 ldrsh r1, [r1, r0] - 8000124: 0049 lsls r1, r1, #1 - 8000126: 448e add lr, r1 - 8000128: bc03 pop {r0, r1} - 800012a: 4770 bx lr - -0800012c <__udivsi3>: - 800012c: 2200 movs r2, #0 - 800012e: 0843 lsrs r3, r0, #1 - 8000130: 428b cmp r3, r1 - 8000132: d374 bcc.n 800021e <__udivsi3+0xf2> - 8000134: 0903 lsrs r3, r0, #4 - 8000136: 428b cmp r3, r1 - 8000138: d35f bcc.n 80001fa <__udivsi3+0xce> - 800013a: 0a03 lsrs r3, r0, #8 - 800013c: 428b cmp r3, r1 - 800013e: d344 bcc.n 80001ca <__udivsi3+0x9e> - 8000140: 0b03 lsrs r3, r0, #12 - 8000142: 428b cmp r3, r1 - 8000144: d328 bcc.n 8000198 <__udivsi3+0x6c> - 8000146: 0c03 lsrs r3, r0, #16 - 8000148: 428b cmp r3, r1 - 800014a: d30d bcc.n 8000168 <__udivsi3+0x3c> - 800014c: 22ff movs r2, #255 ; 0xff - 800014e: 0209 lsls r1, r1, #8 - 8000150: ba12 rev r2, r2 - 8000152: 0c03 lsrs r3, r0, #16 - 8000154: 428b cmp r3, r1 - 8000156: d302 bcc.n 800015e <__udivsi3+0x32> - 8000158: 1212 asrs r2, r2, #8 - 800015a: 0209 lsls r1, r1, #8 - 800015c: d065 beq.n 800022a <__udivsi3+0xfe> - 800015e: 0b03 lsrs r3, r0, #12 - 8000160: 428b cmp r3, r1 - 8000162: d319 bcc.n 8000198 <__udivsi3+0x6c> - 8000164: e000 b.n 8000168 <__udivsi3+0x3c> - 8000166: 0a09 lsrs r1, r1, #8 - 8000168: 0bc3 lsrs r3, r0, #15 - 800016a: 428b cmp r3, r1 - 800016c: d301 bcc.n 8000172 <__udivsi3+0x46> - 800016e: 03cb lsls r3, r1, #15 - 8000170: 1ac0 subs r0, r0, r3 - 8000172: 4152 adcs r2, r2 - 8000174: 0b83 lsrs r3, r0, #14 - 8000176: 428b cmp r3, r1 - 8000178: d301 bcc.n 800017e <__udivsi3+0x52> - 800017a: 038b lsls r3, r1, #14 - 800017c: 1ac0 subs r0, r0, r3 - 800017e: 4152 adcs r2, r2 - 8000180: 0b43 lsrs r3, r0, #13 - 8000182: 428b cmp r3, r1 - 8000184: d301 bcc.n 800018a <__udivsi3+0x5e> - 8000186: 034b lsls r3, r1, #13 - 8000188: 1ac0 subs r0, r0, r3 - 800018a: 4152 adcs r2, r2 - 800018c: 0b03 lsrs r3, r0, #12 - 800018e: 428b cmp r3, r1 - 8000190: d301 bcc.n 8000196 <__udivsi3+0x6a> - 8000192: 030b lsls r3, r1, #12 - 8000194: 1ac0 subs r0, r0, r3 - 8000196: 4152 adcs r2, r2 - 8000198: 0ac3 lsrs r3, r0, #11 - 800019a: 428b cmp r3, r1 - 800019c: d301 bcc.n 80001a2 <__udivsi3+0x76> - 800019e: 02cb lsls r3, r1, #11 - 80001a0: 1ac0 subs r0, r0, r3 - 80001a2: 4152 adcs r2, r2 - 80001a4: 0a83 lsrs r3, r0, #10 - 80001a6: 428b cmp r3, r1 - 80001a8: d301 bcc.n 80001ae <__udivsi3+0x82> - 80001aa: 028b lsls r3, r1, #10 - 80001ac: 1ac0 subs r0, r0, r3 - 80001ae: 4152 adcs r2, r2 - 80001b0: 0a43 lsrs r3, r0, #9 - 80001b2: 428b cmp r3, r1 - 80001b4: d301 bcc.n 80001ba <__udivsi3+0x8e> - 80001b6: 024b lsls r3, r1, #9 - 80001b8: 1ac0 subs r0, r0, r3 - 80001ba: 4152 adcs r2, r2 - 80001bc: 0a03 lsrs r3, r0, #8 - 80001be: 428b cmp r3, r1 - 80001c0: d301 bcc.n 80001c6 <__udivsi3+0x9a> - 80001c2: 020b lsls r3, r1, #8 - 80001c4: 1ac0 subs r0, r0, r3 - 80001c6: 4152 adcs r2, r2 - 80001c8: d2cd bcs.n 8000166 <__udivsi3+0x3a> - 80001ca: 09c3 lsrs r3, r0, #7 - 80001cc: 428b cmp r3, r1 - 80001ce: d301 bcc.n 80001d4 <__udivsi3+0xa8> - 80001d0: 01cb lsls r3, r1, #7 - 80001d2: 1ac0 subs r0, r0, r3 - 80001d4: 4152 adcs r2, r2 - 80001d6: 0983 lsrs r3, r0, #6 - 80001d8: 428b cmp r3, r1 - 80001da: d301 bcc.n 80001e0 <__udivsi3+0xb4> - 80001dc: 018b lsls r3, r1, #6 - 80001de: 1ac0 subs r0, r0, r3 - 80001e0: 4152 adcs r2, r2 - 80001e2: 0943 lsrs r3, r0, #5 - 80001e4: 428b cmp r3, r1 - 80001e6: d301 bcc.n 80001ec <__udivsi3+0xc0> - 80001e8: 014b lsls r3, r1, #5 - 80001ea: 1ac0 subs r0, r0, r3 - 80001ec: 4152 adcs r2, r2 - 80001ee: 0903 lsrs r3, r0, #4 - 80001f0: 428b cmp r3, r1 - 80001f2: d301 bcc.n 80001f8 <__udivsi3+0xcc> - 80001f4: 010b lsls r3, r1, #4 - 80001f6: 1ac0 subs r0, r0, r3 - 80001f8: 4152 adcs r2, r2 - 80001fa: 08c3 lsrs r3, r0, #3 - 80001fc: 428b cmp r3, r1 - 80001fe: d301 bcc.n 8000204 <__udivsi3+0xd8> - 8000200: 00cb lsls r3, r1, #3 - 8000202: 1ac0 subs r0, r0, r3 - 8000204: 4152 adcs r2, r2 - 8000206: 0883 lsrs r3, r0, #2 - 8000208: 428b cmp r3, r1 - 800020a: d301 bcc.n 8000210 <__udivsi3+0xe4> - 800020c: 008b lsls r3, r1, #2 - 800020e: 1ac0 subs r0, r0, r3 - 8000210: 4152 adcs r2, r2 - 8000212: 0843 lsrs r3, r0, #1 - 8000214: 428b cmp r3, r1 - 8000216: d301 bcc.n 800021c <__udivsi3+0xf0> - 8000218: 004b lsls r3, r1, #1 - 800021a: 1ac0 subs r0, r0, r3 - 800021c: 4152 adcs r2, r2 - 800021e: 1a41 subs r1, r0, r1 - 8000220: d200 bcs.n 8000224 <__udivsi3+0xf8> - 8000222: 4601 mov r1, r0 - 8000224: 4152 adcs r2, r2 - 8000226: 4610 mov r0, r2 - 8000228: 4770 bx lr - 800022a: e7ff b.n 800022c <__udivsi3+0x100> - 800022c: b501 push {r0, lr} - 800022e: 2000 movs r0, #0 - 8000230: f000 f8f0 bl 8000414 <__aeabi_idiv0> - 8000234: bd02 pop {r1, pc} - 8000236: 46c0 nop ; (mov r8, r8) - -08000238 <__aeabi_uidivmod>: - 8000238: 2900 cmp r1, #0 - 800023a: d0f7 beq.n 800022c <__udivsi3+0x100> - 800023c: e776 b.n 800012c <__udivsi3> - 800023e: 4770 bx lr - -08000240 <__divsi3>: - 8000240: 4603 mov r3, r0 - 8000242: 430b orrs r3, r1 - 8000244: d47f bmi.n 8000346 <__divsi3+0x106> - 8000246: 2200 movs r2, #0 - 8000248: 0843 lsrs r3, r0, #1 - 800024a: 428b cmp r3, r1 - 800024c: d374 bcc.n 8000338 <__divsi3+0xf8> - 800024e: 0903 lsrs r3, r0, #4 - 8000250: 428b cmp r3, r1 - 8000252: d35f bcc.n 8000314 <__divsi3+0xd4> - 8000254: 0a03 lsrs r3, r0, #8 - 8000256: 428b cmp r3, r1 - 8000258: d344 bcc.n 80002e4 <__divsi3+0xa4> - 800025a: 0b03 lsrs r3, r0, #12 - 800025c: 428b cmp r3, r1 - 800025e: d328 bcc.n 80002b2 <__divsi3+0x72> - 8000260: 0c03 lsrs r3, r0, #16 - 8000262: 428b cmp r3, r1 - 8000264: d30d bcc.n 8000282 <__divsi3+0x42> - 8000266: 22ff movs r2, #255 ; 0xff - 8000268: 0209 lsls r1, r1, #8 - 800026a: ba12 rev r2, r2 - 800026c: 0c03 lsrs r3, r0, #16 - 800026e: 428b cmp r3, r1 - 8000270: d302 bcc.n 8000278 <__divsi3+0x38> - 8000272: 1212 asrs r2, r2, #8 - 8000274: 0209 lsls r1, r1, #8 - 8000276: d065 beq.n 8000344 <__divsi3+0x104> - 8000278: 0b03 lsrs r3, r0, #12 - 800027a: 428b cmp r3, r1 - 800027c: d319 bcc.n 80002b2 <__divsi3+0x72> - 800027e: e000 b.n 8000282 <__divsi3+0x42> - 8000280: 0a09 lsrs r1, r1, #8 - 8000282: 0bc3 lsrs r3, r0, #15 - 8000284: 428b cmp r3, r1 - 8000286: d301 bcc.n 800028c <__divsi3+0x4c> - 8000288: 03cb lsls r3, r1, #15 - 800028a: 1ac0 subs r0, r0, r3 - 800028c: 4152 adcs r2, r2 - 800028e: 0b83 lsrs r3, r0, #14 - 8000290: 428b cmp r3, r1 - 8000292: d301 bcc.n 8000298 <__divsi3+0x58> - 8000294: 038b lsls r3, r1, #14 - 8000296: 1ac0 subs r0, r0, r3 - 8000298: 4152 adcs r2, r2 - 800029a: 0b43 lsrs r3, r0, #13 - 800029c: 428b cmp r3, r1 - 800029e: d301 bcc.n 80002a4 <__divsi3+0x64> - 80002a0: 034b lsls r3, r1, #13 - 80002a2: 1ac0 subs r0, r0, r3 - 80002a4: 4152 adcs r2, r2 - 80002a6: 0b03 lsrs r3, r0, #12 - 80002a8: 428b cmp r3, r1 - 80002aa: d301 bcc.n 80002b0 <__divsi3+0x70> - 80002ac: 030b lsls r3, r1, #12 - 80002ae: 1ac0 subs r0, r0, r3 - 80002b0: 4152 adcs r2, r2 - 80002b2: 0ac3 lsrs r3, r0, #11 - 80002b4: 428b cmp r3, r1 - 80002b6: d301 bcc.n 80002bc <__divsi3+0x7c> - 80002b8: 02cb lsls r3, r1, #11 - 80002ba: 1ac0 subs r0, r0, r3 - 80002bc: 4152 adcs r2, r2 - 80002be: 0a83 lsrs r3, r0, #10 - 80002c0: 428b cmp r3, r1 - 80002c2: d301 bcc.n 80002c8 <__divsi3+0x88> - 80002c4: 028b lsls r3, r1, #10 - 80002c6: 1ac0 subs r0, r0, r3 - 80002c8: 4152 adcs r2, r2 - 80002ca: 0a43 lsrs r3, r0, #9 - 80002cc: 428b cmp r3, r1 - 80002ce: d301 bcc.n 80002d4 <__divsi3+0x94> - 80002d0: 024b lsls r3, r1, #9 - 80002d2: 1ac0 subs r0, r0, r3 - 80002d4: 4152 adcs r2, r2 - 80002d6: 0a03 lsrs r3, r0, #8 - 80002d8: 428b cmp r3, r1 - 80002da: d301 bcc.n 80002e0 <__divsi3+0xa0> - 80002dc: 020b lsls r3, r1, #8 - 80002de: 1ac0 subs r0, r0, r3 - 80002e0: 4152 adcs r2, r2 - 80002e2: d2cd bcs.n 8000280 <__divsi3+0x40> - 80002e4: 09c3 lsrs r3, r0, #7 - 80002e6: 428b cmp r3, r1 - 80002e8: d301 bcc.n 80002ee <__divsi3+0xae> - 80002ea: 01cb lsls r3, r1, #7 - 80002ec: 1ac0 subs r0, r0, r3 - 80002ee: 4152 adcs r2, r2 - 80002f0: 0983 lsrs r3, r0, #6 - 80002f2: 428b cmp r3, r1 - 80002f4: d301 bcc.n 80002fa <__divsi3+0xba> - 80002f6: 018b lsls r3, r1, #6 - 80002f8: 1ac0 subs r0, r0, r3 - 80002fa: 4152 adcs r2, r2 - 80002fc: 0943 lsrs r3, r0, #5 - 80002fe: 428b cmp r3, r1 - 8000300: d301 bcc.n 8000306 <__divsi3+0xc6> - 8000302: 014b lsls r3, r1, #5 - 8000304: 1ac0 subs r0, r0, r3 - 8000306: 4152 adcs r2, r2 - 8000308: 0903 lsrs r3, r0, #4 - 800030a: 428b cmp r3, r1 - 800030c: d301 bcc.n 8000312 <__divsi3+0xd2> - 800030e: 010b lsls r3, r1, #4 - 8000310: 1ac0 subs r0, r0, r3 - 8000312: 4152 adcs r2, r2 - 8000314: 08c3 lsrs r3, r0, #3 - 8000316: 428b cmp r3, r1 - 8000318: d301 bcc.n 800031e <__divsi3+0xde> - 800031a: 00cb lsls r3, r1, #3 - 800031c: 1ac0 subs r0, r0, r3 - 800031e: 4152 adcs r2, r2 - 8000320: 0883 lsrs r3, r0, #2 - 8000322: 428b cmp r3, r1 - 8000324: d301 bcc.n 800032a <__divsi3+0xea> - 8000326: 008b lsls r3, r1, #2 - 8000328: 1ac0 subs r0, r0, r3 - 800032a: 4152 adcs r2, r2 - 800032c: 0843 lsrs r3, r0, #1 - 800032e: 428b cmp r3, r1 - 8000330: d301 bcc.n 8000336 <__divsi3+0xf6> - 8000332: 004b lsls r3, r1, #1 - 8000334: 1ac0 subs r0, r0, r3 - 8000336: 4152 adcs r2, r2 - 8000338: 1a41 subs r1, r0, r1 - 800033a: d200 bcs.n 800033e <__divsi3+0xfe> - 800033c: 4601 mov r1, r0 - 800033e: 4152 adcs r2, r2 - 8000340: 4610 mov r0, r2 - 8000342: 4770 bx lr - 8000344: e05d b.n 8000402 <__divsi3+0x1c2> - 8000346: 0fca lsrs r2, r1, #31 - 8000348: d000 beq.n 800034c <__divsi3+0x10c> - 800034a: 4249 negs r1, r1 - 800034c: 1003 asrs r3, r0, #32 - 800034e: d300 bcc.n 8000352 <__divsi3+0x112> - 8000350: 4240 negs r0, r0 - 8000352: 4053 eors r3, r2 - 8000354: 2200 movs r2, #0 - 8000356: 469c mov ip, r3 - 8000358: 0903 lsrs r3, r0, #4 - 800035a: 428b cmp r3, r1 - 800035c: d32d bcc.n 80003ba <__divsi3+0x17a> - 800035e: 0a03 lsrs r3, r0, #8 - 8000360: 428b cmp r3, r1 - 8000362: d312 bcc.n 800038a <__divsi3+0x14a> - 8000364: 22fc movs r2, #252 ; 0xfc - 8000366: 0189 lsls r1, r1, #6 - 8000368: ba12 rev r2, r2 - 800036a: 0a03 lsrs r3, r0, #8 - 800036c: 428b cmp r3, r1 - 800036e: d30c bcc.n 800038a <__divsi3+0x14a> - 8000370: 0189 lsls r1, r1, #6 - 8000372: 1192 asrs r2, r2, #6 - 8000374: 428b cmp r3, r1 - 8000376: d308 bcc.n 800038a <__divsi3+0x14a> - 8000378: 0189 lsls r1, r1, #6 - 800037a: 1192 asrs r2, r2, #6 - 800037c: 428b cmp r3, r1 - 800037e: d304 bcc.n 800038a <__divsi3+0x14a> - 8000380: 0189 lsls r1, r1, #6 - 8000382: d03a beq.n 80003fa <__divsi3+0x1ba> - 8000384: 1192 asrs r2, r2, #6 - 8000386: e000 b.n 800038a <__divsi3+0x14a> - 8000388: 0989 lsrs r1, r1, #6 - 800038a: 09c3 lsrs r3, r0, #7 - 800038c: 428b cmp r3, r1 - 800038e: d301 bcc.n 8000394 <__divsi3+0x154> - 8000390: 01cb lsls r3, r1, #7 - 8000392: 1ac0 subs r0, r0, r3 - 8000394: 4152 adcs r2, r2 - 8000396: 0983 lsrs r3, r0, #6 - 8000398: 428b cmp r3, r1 - 800039a: d301 bcc.n 80003a0 <__divsi3+0x160> - 800039c: 018b lsls r3, r1, #6 - 800039e: 1ac0 subs r0, r0, r3 - 80003a0: 4152 adcs r2, r2 - 80003a2: 0943 lsrs r3, r0, #5 - 80003a4: 428b cmp r3, r1 - 80003a6: d301 bcc.n 80003ac <__divsi3+0x16c> - 80003a8: 014b lsls r3, r1, #5 - 80003aa: 1ac0 subs r0, r0, r3 - 80003ac: 4152 adcs r2, r2 - 80003ae: 0903 lsrs r3, r0, #4 - 80003b0: 428b cmp r3, r1 - 80003b2: d301 bcc.n 80003b8 <__divsi3+0x178> - 80003b4: 010b lsls r3, r1, #4 - 80003b6: 1ac0 subs r0, r0, r3 - 80003b8: 4152 adcs r2, r2 - 80003ba: 08c3 lsrs r3, r0, #3 - 80003bc: 428b cmp r3, r1 - 80003be: d301 bcc.n 80003c4 <__divsi3+0x184> - 80003c0: 00cb lsls r3, r1, #3 - 80003c2: 1ac0 subs r0, r0, r3 - 80003c4: 4152 adcs r2, r2 - 80003c6: 0883 lsrs r3, r0, #2 - 80003c8: 428b cmp r3, r1 - 80003ca: d301 bcc.n 80003d0 <__divsi3+0x190> - 80003cc: 008b lsls r3, r1, #2 - 80003ce: 1ac0 subs r0, r0, r3 - 80003d0: 4152 adcs r2, r2 - 80003d2: d2d9 bcs.n 8000388 <__divsi3+0x148> - 80003d4: 0843 lsrs r3, r0, #1 - 80003d6: 428b cmp r3, r1 - 80003d8: d301 bcc.n 80003de <__divsi3+0x19e> - 80003da: 004b lsls r3, r1, #1 - 80003dc: 1ac0 subs r0, r0, r3 - 80003de: 4152 adcs r2, r2 - 80003e0: 1a41 subs r1, r0, r1 - 80003e2: d200 bcs.n 80003e6 <__divsi3+0x1a6> - 80003e4: 4601 mov r1, r0 - 80003e6: 4663 mov r3, ip - 80003e8: 4152 adcs r2, r2 - 80003ea: 105b asrs r3, r3, #1 - 80003ec: 4610 mov r0, r2 - 80003ee: d301 bcc.n 80003f4 <__divsi3+0x1b4> - 80003f0: 4240 negs r0, r0 - 80003f2: 2b00 cmp r3, #0 - 80003f4: d500 bpl.n 80003f8 <__divsi3+0x1b8> - 80003f6: 4249 negs r1, r1 - 80003f8: 4770 bx lr - 80003fa: 4663 mov r3, ip - 80003fc: 105b asrs r3, r3, #1 - 80003fe: d300 bcc.n 8000402 <__divsi3+0x1c2> - 8000400: 4240 negs r0, r0 - 8000402: b501 push {r0, lr} - 8000404: 2000 movs r0, #0 - 8000406: f000 f805 bl 8000414 <__aeabi_idiv0> - 800040a: bd02 pop {r1, pc} - -0800040c <__aeabi_idivmod>: - 800040c: 2900 cmp r1, #0 - 800040e: d0f8 beq.n 8000402 <__divsi3+0x1c2> - 8000410: e716 b.n 8000240 <__divsi3> - 8000412: 4770 bx lr - -08000414 <__aeabi_idiv0>: - 8000414: 4770 bx lr - 8000416: 46c0 nop ; (mov r8, r8) - -08000418 <__aeabi_cfrcmple>: - 8000418: 4684 mov ip, r0 - 800041a: 0008 movs r0, r1 - 800041c: 4661 mov r1, ip - 800041e: e7ff b.n 8000420 <__aeabi_cfcmpeq> - -08000420 <__aeabi_cfcmpeq>: - 8000420: b51f push {r0, r1, r2, r3, r4, lr} - 8000422: f000 fb6d bl 8000b00 <__lesf2> - 8000426: 2800 cmp r0, #0 - 8000428: d401 bmi.n 800042e <__aeabi_cfcmpeq+0xe> - 800042a: 2100 movs r1, #0 - 800042c: 42c8 cmn r0, r1 - 800042e: bd1f pop {r0, r1, r2, r3, r4, pc} - -08000430 <__aeabi_fcmpeq>: - 8000430: b510 push {r4, lr} - 8000432: f000 faf9 bl 8000a28 <__eqsf2> - 8000436: 4240 negs r0, r0 - 8000438: 3001 adds r0, #1 - 800043a: bd10 pop {r4, pc} - -0800043c <__aeabi_fcmplt>: - 800043c: b510 push {r4, lr} - 800043e: f000 fb5f bl 8000b00 <__lesf2> - 8000442: 2800 cmp r0, #0 - 8000444: db01 blt.n 800044a <__aeabi_fcmplt+0xe> - 8000446: 2000 movs r0, #0 - 8000448: bd10 pop {r4, pc} - 800044a: 2001 movs r0, #1 - 800044c: bd10 pop {r4, pc} - 800044e: 46c0 nop ; (mov r8, r8) - -08000450 <__aeabi_fcmple>: - 8000450: b510 push {r4, lr} - 8000452: f000 fb55 bl 8000b00 <__lesf2> - 8000456: 2800 cmp r0, #0 - 8000458: dd01 ble.n 800045e <__aeabi_fcmple+0xe> - 800045a: 2000 movs r0, #0 - 800045c: bd10 pop {r4, pc} - 800045e: 2001 movs r0, #1 - 8000460: bd10 pop {r4, pc} - 8000462: 46c0 nop ; (mov r8, r8) - -08000464 <__aeabi_fcmpgt>: - 8000464: b510 push {r4, lr} - 8000466: f000 fb05 bl 8000a74 <__gesf2> - 800046a: 2800 cmp r0, #0 - 800046c: dc01 bgt.n 8000472 <__aeabi_fcmpgt+0xe> - 800046e: 2000 movs r0, #0 - 8000470: bd10 pop {r4, pc} - 8000472: 2001 movs r0, #1 - 8000474: bd10 pop {r4, pc} - 8000476: 46c0 nop ; (mov r8, r8) - -08000478 <__aeabi_fcmpge>: - 8000478: b510 push {r4, lr} - 800047a: f000 fafb bl 8000a74 <__gesf2> - 800047e: 2800 cmp r0, #0 - 8000480: da01 bge.n 8000486 <__aeabi_fcmpge+0xe> - 8000482: 2000 movs r0, #0 - 8000484: bd10 pop {r4, pc} - 8000486: 2001 movs r0, #1 - 8000488: bd10 pop {r4, pc} - 800048a: 46c0 nop ; (mov r8, r8) - -0800048c <__aeabi_f2uiz>: - 800048c: 219e movs r1, #158 ; 0x9e - 800048e: b510 push {r4, lr} - 8000490: 05c9 lsls r1, r1, #23 - 8000492: 1c04 adds r4, r0, #0 - 8000494: f7ff fff0 bl 8000478 <__aeabi_fcmpge> - 8000498: 2800 cmp r0, #0 - 800049a: d103 bne.n 80004a4 <__aeabi_f2uiz+0x18> - 800049c: 1c20 adds r0, r4, #0 - 800049e: f000 fe47 bl 8001130 <__aeabi_f2iz> - 80004a2: bd10 pop {r4, pc} - 80004a4: 219e movs r1, #158 ; 0x9e - 80004a6: 1c20 adds r0, r4, #0 - 80004a8: 05c9 lsls r1, r1, #23 - 80004aa: f000 fc93 bl 8000dd4 <__aeabi_fsub> - 80004ae: f000 fe3f bl 8001130 <__aeabi_f2iz> - 80004b2: 2380 movs r3, #128 ; 0x80 - 80004b4: 061b lsls r3, r3, #24 - 80004b6: 469c mov ip, r3 - 80004b8: 4460 add r0, ip - 80004ba: e7f2 b.n 80004a2 <__aeabi_f2uiz+0x16> - -080004bc <__aeabi_fadd>: - 80004bc: b5f0 push {r4, r5, r6, r7, lr} - 80004be: 46c6 mov lr, r8 - 80004c0: 0243 lsls r3, r0, #9 - 80004c2: 0a5b lsrs r3, r3, #9 - 80004c4: 024e lsls r6, r1, #9 - 80004c6: 0045 lsls r5, r0, #1 - 80004c8: 004f lsls r7, r1, #1 - 80004ca: 00da lsls r2, r3, #3 - 80004cc: 0fc4 lsrs r4, r0, #31 - 80004ce: 469c mov ip, r3 - 80004d0: 0a70 lsrs r0, r6, #9 - 80004d2: 4690 mov r8, r2 - 80004d4: b500 push {lr} - 80004d6: 0e2d lsrs r5, r5, #24 - 80004d8: 0e3f lsrs r7, r7, #24 - 80004da: 0fc9 lsrs r1, r1, #31 - 80004dc: 09b6 lsrs r6, r6, #6 - 80004de: 428c cmp r4, r1 - 80004e0: d04b beq.n 800057a <__aeabi_fadd+0xbe> - 80004e2: 1bea subs r2, r5, r7 - 80004e4: 2a00 cmp r2, #0 - 80004e6: dd36 ble.n 8000556 <__aeabi_fadd+0x9a> - 80004e8: 2f00 cmp r7, #0 - 80004ea: d061 beq.n 80005b0 <__aeabi_fadd+0xf4> - 80004ec: 2dff cmp r5, #255 ; 0xff - 80004ee: d100 bne.n 80004f2 <__aeabi_fadd+0x36> - 80004f0: e0ad b.n 800064e <__aeabi_fadd+0x192> - 80004f2: 2380 movs r3, #128 ; 0x80 - 80004f4: 04db lsls r3, r3, #19 - 80004f6: 431e orrs r6, r3 - 80004f8: 2a1b cmp r2, #27 - 80004fa: dc00 bgt.n 80004fe <__aeabi_fadd+0x42> - 80004fc: e0d3 b.n 80006a6 <__aeabi_fadd+0x1ea> - 80004fe: 2001 movs r0, #1 - 8000500: 4643 mov r3, r8 - 8000502: 1a18 subs r0, r3, r0 - 8000504: 0143 lsls r3, r0, #5 - 8000506: d400 bmi.n 800050a <__aeabi_fadd+0x4e> - 8000508: e08c b.n 8000624 <__aeabi_fadd+0x168> - 800050a: 0180 lsls r0, r0, #6 - 800050c: 0987 lsrs r7, r0, #6 - 800050e: 0038 movs r0, r7 - 8000510: f001 f9e2 bl 80018d8 <__clzsi2> - 8000514: 3805 subs r0, #5 - 8000516: 4087 lsls r7, r0 - 8000518: 4285 cmp r5, r0 - 800051a: dc00 bgt.n 800051e <__aeabi_fadd+0x62> - 800051c: e0b6 b.n 800068c <__aeabi_fadd+0x1d0> - 800051e: 1a2d subs r5, r5, r0 - 8000520: 48b3 ldr r0, [pc, #716] ; (80007f0 <__aeabi_fadd+0x334>) - 8000522: 4038 ands r0, r7 - 8000524: 0743 lsls r3, r0, #29 - 8000526: d004 beq.n 8000532 <__aeabi_fadd+0x76> - 8000528: 230f movs r3, #15 - 800052a: 4003 ands r3, r0 - 800052c: 2b04 cmp r3, #4 - 800052e: d000 beq.n 8000532 <__aeabi_fadd+0x76> - 8000530: 3004 adds r0, #4 - 8000532: 0143 lsls r3, r0, #5 - 8000534: d400 bmi.n 8000538 <__aeabi_fadd+0x7c> - 8000536: e078 b.n 800062a <__aeabi_fadd+0x16e> - 8000538: 1c6a adds r2, r5, #1 - 800053a: 2dfe cmp r5, #254 ; 0xfe - 800053c: d065 beq.n 800060a <__aeabi_fadd+0x14e> - 800053e: 0180 lsls r0, r0, #6 - 8000540: 0a43 lsrs r3, r0, #9 - 8000542: 469c mov ip, r3 - 8000544: b2d2 uxtb r2, r2 - 8000546: 4663 mov r3, ip - 8000548: 05d0 lsls r0, r2, #23 - 800054a: 4318 orrs r0, r3 - 800054c: 07e4 lsls r4, r4, #31 - 800054e: 4320 orrs r0, r4 - 8000550: bc80 pop {r7} - 8000552: 46b8 mov r8, r7 - 8000554: bdf0 pop {r4, r5, r6, r7, pc} - 8000556: 2a00 cmp r2, #0 - 8000558: d035 beq.n 80005c6 <__aeabi_fadd+0x10a> - 800055a: 1b7a subs r2, r7, r5 - 800055c: 2d00 cmp r5, #0 - 800055e: d000 beq.n 8000562 <__aeabi_fadd+0xa6> - 8000560: e0af b.n 80006c2 <__aeabi_fadd+0x206> - 8000562: 4643 mov r3, r8 - 8000564: 2b00 cmp r3, #0 - 8000566: d100 bne.n 800056a <__aeabi_fadd+0xae> - 8000568: e0a7 b.n 80006ba <__aeabi_fadd+0x1fe> - 800056a: 1e53 subs r3, r2, #1 - 800056c: 2a01 cmp r2, #1 - 800056e: d100 bne.n 8000572 <__aeabi_fadd+0xb6> - 8000570: e12f b.n 80007d2 <__aeabi_fadd+0x316> - 8000572: 2aff cmp r2, #255 ; 0xff - 8000574: d069 beq.n 800064a <__aeabi_fadd+0x18e> - 8000576: 001a movs r2, r3 - 8000578: e0aa b.n 80006d0 <__aeabi_fadd+0x214> - 800057a: 1be9 subs r1, r5, r7 - 800057c: 2900 cmp r1, #0 - 800057e: dd70 ble.n 8000662 <__aeabi_fadd+0x1a6> - 8000580: 2f00 cmp r7, #0 - 8000582: d037 beq.n 80005f4 <__aeabi_fadd+0x138> - 8000584: 2dff cmp r5, #255 ; 0xff - 8000586: d062 beq.n 800064e <__aeabi_fadd+0x192> - 8000588: 2380 movs r3, #128 ; 0x80 - 800058a: 04db lsls r3, r3, #19 - 800058c: 431e orrs r6, r3 - 800058e: 291b cmp r1, #27 - 8000590: dc00 bgt.n 8000594 <__aeabi_fadd+0xd8> - 8000592: e0b0 b.n 80006f6 <__aeabi_fadd+0x23a> - 8000594: 2001 movs r0, #1 - 8000596: 4440 add r0, r8 - 8000598: 0143 lsls r3, r0, #5 - 800059a: d543 bpl.n 8000624 <__aeabi_fadd+0x168> - 800059c: 3501 adds r5, #1 - 800059e: 2dff cmp r5, #255 ; 0xff - 80005a0: d033 beq.n 800060a <__aeabi_fadd+0x14e> - 80005a2: 2301 movs r3, #1 - 80005a4: 4a93 ldr r2, [pc, #588] ; (80007f4 <__aeabi_fadd+0x338>) - 80005a6: 4003 ands r3, r0 - 80005a8: 0840 lsrs r0, r0, #1 - 80005aa: 4010 ands r0, r2 - 80005ac: 4318 orrs r0, r3 - 80005ae: e7b9 b.n 8000524 <__aeabi_fadd+0x68> - 80005b0: 2e00 cmp r6, #0 - 80005b2: d100 bne.n 80005b6 <__aeabi_fadd+0xfa> - 80005b4: e083 b.n 80006be <__aeabi_fadd+0x202> - 80005b6: 1e51 subs r1, r2, #1 - 80005b8: 2a01 cmp r2, #1 - 80005ba: d100 bne.n 80005be <__aeabi_fadd+0x102> - 80005bc: e0d8 b.n 8000770 <__aeabi_fadd+0x2b4> - 80005be: 2aff cmp r2, #255 ; 0xff - 80005c0: d045 beq.n 800064e <__aeabi_fadd+0x192> - 80005c2: 000a movs r2, r1 - 80005c4: e798 b.n 80004f8 <__aeabi_fadd+0x3c> - 80005c6: 27fe movs r7, #254 ; 0xfe - 80005c8: 1c6a adds r2, r5, #1 - 80005ca: 4217 tst r7, r2 - 80005cc: d000 beq.n 80005d0 <__aeabi_fadd+0x114> - 80005ce: e086 b.n 80006de <__aeabi_fadd+0x222> - 80005d0: 2d00 cmp r5, #0 - 80005d2: d000 beq.n 80005d6 <__aeabi_fadd+0x11a> - 80005d4: e0b7 b.n 8000746 <__aeabi_fadd+0x28a> - 80005d6: 4643 mov r3, r8 - 80005d8: 2b00 cmp r3, #0 - 80005da: d100 bne.n 80005de <__aeabi_fadd+0x122> - 80005dc: e0f3 b.n 80007c6 <__aeabi_fadd+0x30a> - 80005de: 2200 movs r2, #0 - 80005e0: 2e00 cmp r6, #0 - 80005e2: d0b0 beq.n 8000546 <__aeabi_fadd+0x8a> - 80005e4: 1b98 subs r0, r3, r6 - 80005e6: 0143 lsls r3, r0, #5 - 80005e8: d400 bmi.n 80005ec <__aeabi_fadd+0x130> - 80005ea: e0fa b.n 80007e2 <__aeabi_fadd+0x326> - 80005ec: 4643 mov r3, r8 - 80005ee: 000c movs r4, r1 - 80005f0: 1af0 subs r0, r6, r3 - 80005f2: e797 b.n 8000524 <__aeabi_fadd+0x68> - 80005f4: 2e00 cmp r6, #0 - 80005f6: d100 bne.n 80005fa <__aeabi_fadd+0x13e> - 80005f8: e0c8 b.n 800078c <__aeabi_fadd+0x2d0> - 80005fa: 1e4a subs r2, r1, #1 - 80005fc: 2901 cmp r1, #1 - 80005fe: d100 bne.n 8000602 <__aeabi_fadd+0x146> - 8000600: e0ae b.n 8000760 <__aeabi_fadd+0x2a4> - 8000602: 29ff cmp r1, #255 ; 0xff - 8000604: d023 beq.n 800064e <__aeabi_fadd+0x192> - 8000606: 0011 movs r1, r2 - 8000608: e7c1 b.n 800058e <__aeabi_fadd+0xd2> - 800060a: 2300 movs r3, #0 - 800060c: 22ff movs r2, #255 ; 0xff - 800060e: 469c mov ip, r3 - 8000610: e799 b.n 8000546 <__aeabi_fadd+0x8a> - 8000612: 21fe movs r1, #254 ; 0xfe - 8000614: 1c6a adds r2, r5, #1 - 8000616: 4211 tst r1, r2 - 8000618: d077 beq.n 800070a <__aeabi_fadd+0x24e> - 800061a: 2aff cmp r2, #255 ; 0xff - 800061c: d0f5 beq.n 800060a <__aeabi_fadd+0x14e> - 800061e: 0015 movs r5, r2 - 8000620: 4446 add r6, r8 - 8000622: 0870 lsrs r0, r6, #1 - 8000624: 0743 lsls r3, r0, #29 - 8000626: d000 beq.n 800062a <__aeabi_fadd+0x16e> - 8000628: e77e b.n 8000528 <__aeabi_fadd+0x6c> - 800062a: 08c3 lsrs r3, r0, #3 - 800062c: 2dff cmp r5, #255 ; 0xff - 800062e: d00e beq.n 800064e <__aeabi_fadd+0x192> - 8000630: 025b lsls r3, r3, #9 - 8000632: 0a5b lsrs r3, r3, #9 - 8000634: 469c mov ip, r3 - 8000636: b2ea uxtb r2, r5 - 8000638: e785 b.n 8000546 <__aeabi_fadd+0x8a> - 800063a: 2e00 cmp r6, #0 - 800063c: d007 beq.n 800064e <__aeabi_fadd+0x192> - 800063e: 2280 movs r2, #128 ; 0x80 - 8000640: 03d2 lsls r2, r2, #15 - 8000642: 4213 tst r3, r2 - 8000644: d003 beq.n 800064e <__aeabi_fadd+0x192> - 8000646: 4210 tst r0, r2 - 8000648: d101 bne.n 800064e <__aeabi_fadd+0x192> - 800064a: 000c movs r4, r1 - 800064c: 0003 movs r3, r0 - 800064e: 2b00 cmp r3, #0 - 8000650: d0db beq.n 800060a <__aeabi_fadd+0x14e> - 8000652: 2080 movs r0, #128 ; 0x80 - 8000654: 03c0 lsls r0, r0, #15 - 8000656: 4318 orrs r0, r3 - 8000658: 0240 lsls r0, r0, #9 - 800065a: 0a43 lsrs r3, r0, #9 - 800065c: 469c mov ip, r3 - 800065e: 22ff movs r2, #255 ; 0xff - 8000660: e771 b.n 8000546 <__aeabi_fadd+0x8a> - 8000662: 2900 cmp r1, #0 - 8000664: d0d5 beq.n 8000612 <__aeabi_fadd+0x156> - 8000666: 1b7a subs r2, r7, r5 - 8000668: 2d00 cmp r5, #0 - 800066a: d160 bne.n 800072e <__aeabi_fadd+0x272> - 800066c: 4643 mov r3, r8 - 800066e: 2b00 cmp r3, #0 - 8000670: d024 beq.n 80006bc <__aeabi_fadd+0x200> - 8000672: 1e53 subs r3, r2, #1 - 8000674: 2a01 cmp r2, #1 - 8000676: d073 beq.n 8000760 <__aeabi_fadd+0x2a4> - 8000678: 2aff cmp r2, #255 ; 0xff - 800067a: d0e7 beq.n 800064c <__aeabi_fadd+0x190> - 800067c: 001a movs r2, r3 - 800067e: 2a1b cmp r2, #27 - 8000680: dc00 bgt.n 8000684 <__aeabi_fadd+0x1c8> - 8000682: e085 b.n 8000790 <__aeabi_fadd+0x2d4> - 8000684: 2001 movs r0, #1 - 8000686: 003d movs r5, r7 - 8000688: 1980 adds r0, r0, r6 - 800068a: e785 b.n 8000598 <__aeabi_fadd+0xdc> - 800068c: 2320 movs r3, #32 - 800068e: 003a movs r2, r7 - 8000690: 1b45 subs r5, r0, r5 - 8000692: 0038 movs r0, r7 - 8000694: 3501 adds r5, #1 - 8000696: 40ea lsrs r2, r5 - 8000698: 1b5d subs r5, r3, r5 - 800069a: 40a8 lsls r0, r5 - 800069c: 1e43 subs r3, r0, #1 - 800069e: 4198 sbcs r0, r3 - 80006a0: 2500 movs r5, #0 - 80006a2: 4310 orrs r0, r2 - 80006a4: e73e b.n 8000524 <__aeabi_fadd+0x68> - 80006a6: 2320 movs r3, #32 - 80006a8: 0030 movs r0, r6 - 80006aa: 1a9b subs r3, r3, r2 - 80006ac: 0031 movs r1, r6 - 80006ae: 4098 lsls r0, r3 - 80006b0: 40d1 lsrs r1, r2 - 80006b2: 1e43 subs r3, r0, #1 - 80006b4: 4198 sbcs r0, r3 - 80006b6: 4308 orrs r0, r1 - 80006b8: e722 b.n 8000500 <__aeabi_fadd+0x44> - 80006ba: 000c movs r4, r1 - 80006bc: 0003 movs r3, r0 - 80006be: 0015 movs r5, r2 - 80006c0: e7b4 b.n 800062c <__aeabi_fadd+0x170> - 80006c2: 2fff cmp r7, #255 ; 0xff - 80006c4: d0c1 beq.n 800064a <__aeabi_fadd+0x18e> - 80006c6: 2380 movs r3, #128 ; 0x80 - 80006c8: 4640 mov r0, r8 - 80006ca: 04db lsls r3, r3, #19 - 80006cc: 4318 orrs r0, r3 - 80006ce: 4680 mov r8, r0 - 80006d0: 2a1b cmp r2, #27 - 80006d2: dd51 ble.n 8000778 <__aeabi_fadd+0x2bc> - 80006d4: 2001 movs r0, #1 - 80006d6: 000c movs r4, r1 - 80006d8: 003d movs r5, r7 - 80006da: 1a30 subs r0, r6, r0 - 80006dc: e712 b.n 8000504 <__aeabi_fadd+0x48> - 80006de: 4643 mov r3, r8 - 80006e0: 1b9f subs r7, r3, r6 - 80006e2: 017b lsls r3, r7, #5 - 80006e4: d42b bmi.n 800073e <__aeabi_fadd+0x282> - 80006e6: 2f00 cmp r7, #0 - 80006e8: d000 beq.n 80006ec <__aeabi_fadd+0x230> - 80006ea: e710 b.n 800050e <__aeabi_fadd+0x52> - 80006ec: 2300 movs r3, #0 - 80006ee: 2400 movs r4, #0 - 80006f0: 2200 movs r2, #0 - 80006f2: 469c mov ip, r3 - 80006f4: e727 b.n 8000546 <__aeabi_fadd+0x8a> - 80006f6: 2320 movs r3, #32 - 80006f8: 0032 movs r2, r6 - 80006fa: 0030 movs r0, r6 - 80006fc: 40ca lsrs r2, r1 - 80006fe: 1a59 subs r1, r3, r1 - 8000700: 4088 lsls r0, r1 - 8000702: 1e43 subs r3, r0, #1 - 8000704: 4198 sbcs r0, r3 - 8000706: 4310 orrs r0, r2 - 8000708: e745 b.n 8000596 <__aeabi_fadd+0xda> - 800070a: 2d00 cmp r5, #0 - 800070c: d14a bne.n 80007a4 <__aeabi_fadd+0x2e8> - 800070e: 4643 mov r3, r8 - 8000710: 2b00 cmp r3, #0 - 8000712: d063 beq.n 80007dc <__aeabi_fadd+0x320> - 8000714: 2200 movs r2, #0 - 8000716: 2e00 cmp r6, #0 - 8000718: d100 bne.n 800071c <__aeabi_fadd+0x260> - 800071a: e714 b.n 8000546 <__aeabi_fadd+0x8a> - 800071c: 0030 movs r0, r6 - 800071e: 4440 add r0, r8 - 8000720: 0143 lsls r3, r0, #5 - 8000722: d400 bmi.n 8000726 <__aeabi_fadd+0x26a> - 8000724: e77e b.n 8000624 <__aeabi_fadd+0x168> - 8000726: 4b32 ldr r3, [pc, #200] ; (80007f0 <__aeabi_fadd+0x334>) - 8000728: 3501 adds r5, #1 - 800072a: 4018 ands r0, r3 - 800072c: e77a b.n 8000624 <__aeabi_fadd+0x168> - 800072e: 2fff cmp r7, #255 ; 0xff - 8000730: d08c beq.n 800064c <__aeabi_fadd+0x190> - 8000732: 2380 movs r3, #128 ; 0x80 - 8000734: 4641 mov r1, r8 - 8000736: 04db lsls r3, r3, #19 - 8000738: 4319 orrs r1, r3 - 800073a: 4688 mov r8, r1 - 800073c: e79f b.n 800067e <__aeabi_fadd+0x1c2> - 800073e: 4643 mov r3, r8 - 8000740: 000c movs r4, r1 - 8000742: 1af7 subs r7, r6, r3 - 8000744: e6e3 b.n 800050e <__aeabi_fadd+0x52> - 8000746: 4642 mov r2, r8 - 8000748: 2a00 cmp r2, #0 - 800074a: d000 beq.n 800074e <__aeabi_fadd+0x292> - 800074c: e775 b.n 800063a <__aeabi_fadd+0x17e> - 800074e: 2e00 cmp r6, #0 - 8000750: d000 beq.n 8000754 <__aeabi_fadd+0x298> - 8000752: e77a b.n 800064a <__aeabi_fadd+0x18e> - 8000754: 2380 movs r3, #128 ; 0x80 - 8000756: 03db lsls r3, r3, #15 - 8000758: 2400 movs r4, #0 - 800075a: 469c mov ip, r3 - 800075c: 22ff movs r2, #255 ; 0xff - 800075e: e6f2 b.n 8000546 <__aeabi_fadd+0x8a> - 8000760: 0030 movs r0, r6 - 8000762: 4440 add r0, r8 - 8000764: 2501 movs r5, #1 - 8000766: 0143 lsls r3, r0, #5 - 8000768: d400 bmi.n 800076c <__aeabi_fadd+0x2b0> - 800076a: e75b b.n 8000624 <__aeabi_fadd+0x168> - 800076c: 2502 movs r5, #2 - 800076e: e718 b.n 80005a2 <__aeabi_fadd+0xe6> - 8000770: 4643 mov r3, r8 - 8000772: 2501 movs r5, #1 - 8000774: 1b98 subs r0, r3, r6 - 8000776: e6c5 b.n 8000504 <__aeabi_fadd+0x48> - 8000778: 2320 movs r3, #32 - 800077a: 4644 mov r4, r8 - 800077c: 4640 mov r0, r8 - 800077e: 40d4 lsrs r4, r2 - 8000780: 1a9a subs r2, r3, r2 - 8000782: 4090 lsls r0, r2 - 8000784: 1e43 subs r3, r0, #1 - 8000786: 4198 sbcs r0, r3 - 8000788: 4320 orrs r0, r4 - 800078a: e7a4 b.n 80006d6 <__aeabi_fadd+0x21a> - 800078c: 000d movs r5, r1 - 800078e: e74d b.n 800062c <__aeabi_fadd+0x170> - 8000790: 2320 movs r3, #32 - 8000792: 4641 mov r1, r8 - 8000794: 4640 mov r0, r8 - 8000796: 40d1 lsrs r1, r2 - 8000798: 1a9a subs r2, r3, r2 - 800079a: 4090 lsls r0, r2 - 800079c: 1e43 subs r3, r0, #1 - 800079e: 4198 sbcs r0, r3 - 80007a0: 4308 orrs r0, r1 - 80007a2: e770 b.n 8000686 <__aeabi_fadd+0x1ca> - 80007a4: 4642 mov r2, r8 - 80007a6: 2a00 cmp r2, #0 - 80007a8: d100 bne.n 80007ac <__aeabi_fadd+0x2f0> - 80007aa: e74f b.n 800064c <__aeabi_fadd+0x190> - 80007ac: 2e00 cmp r6, #0 - 80007ae: d100 bne.n 80007b2 <__aeabi_fadd+0x2f6> - 80007b0: e74d b.n 800064e <__aeabi_fadd+0x192> - 80007b2: 2280 movs r2, #128 ; 0x80 - 80007b4: 03d2 lsls r2, r2, #15 - 80007b6: 4213 tst r3, r2 - 80007b8: d100 bne.n 80007bc <__aeabi_fadd+0x300> - 80007ba: e748 b.n 800064e <__aeabi_fadd+0x192> - 80007bc: 4210 tst r0, r2 - 80007be: d000 beq.n 80007c2 <__aeabi_fadd+0x306> - 80007c0: e745 b.n 800064e <__aeabi_fadd+0x192> - 80007c2: 0003 movs r3, r0 - 80007c4: e743 b.n 800064e <__aeabi_fadd+0x192> - 80007c6: 2e00 cmp r6, #0 - 80007c8: d090 beq.n 80006ec <__aeabi_fadd+0x230> - 80007ca: 000c movs r4, r1 - 80007cc: 4684 mov ip, r0 - 80007ce: 2200 movs r2, #0 - 80007d0: e6b9 b.n 8000546 <__aeabi_fadd+0x8a> - 80007d2: 4643 mov r3, r8 - 80007d4: 000c movs r4, r1 - 80007d6: 1af0 subs r0, r6, r3 - 80007d8: 3501 adds r5, #1 - 80007da: e693 b.n 8000504 <__aeabi_fadd+0x48> - 80007dc: 4684 mov ip, r0 - 80007de: 2200 movs r2, #0 - 80007e0: e6b1 b.n 8000546 <__aeabi_fadd+0x8a> - 80007e2: 2800 cmp r0, #0 - 80007e4: d000 beq.n 80007e8 <__aeabi_fadd+0x32c> - 80007e6: e71d b.n 8000624 <__aeabi_fadd+0x168> - 80007e8: 2300 movs r3, #0 - 80007ea: 2400 movs r4, #0 - 80007ec: 469c mov ip, r3 - 80007ee: e6aa b.n 8000546 <__aeabi_fadd+0x8a> - 80007f0: fbffffff .word 0xfbffffff - 80007f4: 7dffffff .word 0x7dffffff - -080007f8 <__aeabi_fdiv>: - 80007f8: b5f0 push {r4, r5, r6, r7, lr} - 80007fa: 464f mov r7, r9 - 80007fc: 4646 mov r6, r8 - 80007fe: 46d6 mov lr, sl - 8000800: 0245 lsls r5, r0, #9 - 8000802: b5c0 push {r6, r7, lr} - 8000804: 0047 lsls r7, r0, #1 - 8000806: 1c0c adds r4, r1, #0 - 8000808: 0a6d lsrs r5, r5, #9 - 800080a: 0e3f lsrs r7, r7, #24 - 800080c: 0fc6 lsrs r6, r0, #31 - 800080e: 2f00 cmp r7, #0 - 8000810: d100 bne.n 8000814 <__aeabi_fdiv+0x1c> - 8000812: e070 b.n 80008f6 <__aeabi_fdiv+0xfe> - 8000814: 2fff cmp r7, #255 ; 0xff - 8000816: d100 bne.n 800081a <__aeabi_fdiv+0x22> - 8000818: e075 b.n 8000906 <__aeabi_fdiv+0x10e> - 800081a: 00eb lsls r3, r5, #3 - 800081c: 2580 movs r5, #128 ; 0x80 - 800081e: 04ed lsls r5, r5, #19 - 8000820: 431d orrs r5, r3 - 8000822: 2300 movs r3, #0 - 8000824: 4699 mov r9, r3 - 8000826: 469a mov sl, r3 - 8000828: 3f7f subs r7, #127 ; 0x7f - 800082a: 0260 lsls r0, r4, #9 - 800082c: 0a43 lsrs r3, r0, #9 - 800082e: 4698 mov r8, r3 - 8000830: 0063 lsls r3, r4, #1 - 8000832: 0e1b lsrs r3, r3, #24 - 8000834: 0fe4 lsrs r4, r4, #31 - 8000836: 2b00 cmp r3, #0 - 8000838: d04e beq.n 80008d8 <__aeabi_fdiv+0xe0> - 800083a: 2bff cmp r3, #255 ; 0xff - 800083c: d046 beq.n 80008cc <__aeabi_fdiv+0xd4> - 800083e: 4642 mov r2, r8 - 8000840: 00d0 lsls r0, r2, #3 - 8000842: 2280 movs r2, #128 ; 0x80 - 8000844: 04d2 lsls r2, r2, #19 - 8000846: 4302 orrs r2, r0 - 8000848: 4690 mov r8, r2 - 800084a: 2200 movs r2, #0 - 800084c: 3b7f subs r3, #127 ; 0x7f - 800084e: 0031 movs r1, r6 - 8000850: 1aff subs r7, r7, r3 - 8000852: 464b mov r3, r9 - 8000854: 4061 eors r1, r4 - 8000856: b2c9 uxtb r1, r1 - 8000858: 4313 orrs r3, r2 - 800085a: 2b0f cmp r3, #15 - 800085c: d900 bls.n 8000860 <__aeabi_fdiv+0x68> - 800085e: e0b5 b.n 80009cc <__aeabi_fdiv+0x1d4> - 8000860: 486e ldr r0, [pc, #440] ; (8000a1c <__aeabi_fdiv+0x224>) - 8000862: 009b lsls r3, r3, #2 - 8000864: 58c3 ldr r3, [r0, r3] - 8000866: 469f mov pc, r3 - 8000868: 2300 movs r3, #0 - 800086a: 4698 mov r8, r3 - 800086c: 0026 movs r6, r4 - 800086e: 4645 mov r5, r8 - 8000870: 4692 mov sl, r2 - 8000872: 4653 mov r3, sl - 8000874: 2b02 cmp r3, #2 - 8000876: d100 bne.n 800087a <__aeabi_fdiv+0x82> - 8000878: e089 b.n 800098e <__aeabi_fdiv+0x196> - 800087a: 2b03 cmp r3, #3 - 800087c: d100 bne.n 8000880 <__aeabi_fdiv+0x88> - 800087e: e09e b.n 80009be <__aeabi_fdiv+0x1c6> - 8000880: 2b01 cmp r3, #1 - 8000882: d018 beq.n 80008b6 <__aeabi_fdiv+0xbe> - 8000884: 003b movs r3, r7 - 8000886: 337f adds r3, #127 ; 0x7f - 8000888: 2b00 cmp r3, #0 - 800088a: dd69 ble.n 8000960 <__aeabi_fdiv+0x168> - 800088c: 076a lsls r2, r5, #29 - 800088e: d004 beq.n 800089a <__aeabi_fdiv+0xa2> - 8000890: 220f movs r2, #15 - 8000892: 402a ands r2, r5 - 8000894: 2a04 cmp r2, #4 - 8000896: d000 beq.n 800089a <__aeabi_fdiv+0xa2> - 8000898: 3504 adds r5, #4 - 800089a: 012a lsls r2, r5, #4 - 800089c: d503 bpl.n 80008a6 <__aeabi_fdiv+0xae> - 800089e: 4b60 ldr r3, [pc, #384] ; (8000a20 <__aeabi_fdiv+0x228>) - 80008a0: 401d ands r5, r3 - 80008a2: 003b movs r3, r7 - 80008a4: 3380 adds r3, #128 ; 0x80 - 80008a6: 2bfe cmp r3, #254 ; 0xfe - 80008a8: dd00 ble.n 80008ac <__aeabi_fdiv+0xb4> - 80008aa: e070 b.n 800098e <__aeabi_fdiv+0x196> - 80008ac: 01ad lsls r5, r5, #6 - 80008ae: 0a6d lsrs r5, r5, #9 - 80008b0: b2d8 uxtb r0, r3 - 80008b2: e002 b.n 80008ba <__aeabi_fdiv+0xc2> - 80008b4: 000e movs r6, r1 - 80008b6: 2000 movs r0, #0 - 80008b8: 2500 movs r5, #0 - 80008ba: 05c0 lsls r0, r0, #23 - 80008bc: 4328 orrs r0, r5 - 80008be: 07f6 lsls r6, r6, #31 - 80008c0: 4330 orrs r0, r6 - 80008c2: bce0 pop {r5, r6, r7} - 80008c4: 46ba mov sl, r7 - 80008c6: 46b1 mov r9, r6 - 80008c8: 46a8 mov r8, r5 - 80008ca: bdf0 pop {r4, r5, r6, r7, pc} - 80008cc: 4643 mov r3, r8 - 80008ce: 2b00 cmp r3, #0 - 80008d0: d13f bne.n 8000952 <__aeabi_fdiv+0x15a> - 80008d2: 2202 movs r2, #2 - 80008d4: 3fff subs r7, #255 ; 0xff - 80008d6: e003 b.n 80008e0 <__aeabi_fdiv+0xe8> - 80008d8: 4643 mov r3, r8 - 80008da: 2b00 cmp r3, #0 - 80008dc: d12d bne.n 800093a <__aeabi_fdiv+0x142> - 80008de: 2201 movs r2, #1 - 80008e0: 0031 movs r1, r6 - 80008e2: 464b mov r3, r9 - 80008e4: 4061 eors r1, r4 - 80008e6: b2c9 uxtb r1, r1 - 80008e8: 4313 orrs r3, r2 - 80008ea: 2b0f cmp r3, #15 - 80008ec: d834 bhi.n 8000958 <__aeabi_fdiv+0x160> - 80008ee: 484d ldr r0, [pc, #308] ; (8000a24 <__aeabi_fdiv+0x22c>) - 80008f0: 009b lsls r3, r3, #2 - 80008f2: 58c3 ldr r3, [r0, r3] - 80008f4: 469f mov pc, r3 - 80008f6: 2d00 cmp r5, #0 - 80008f8: d113 bne.n 8000922 <__aeabi_fdiv+0x12a> - 80008fa: 2304 movs r3, #4 - 80008fc: 4699 mov r9, r3 - 80008fe: 3b03 subs r3, #3 - 8000900: 2700 movs r7, #0 - 8000902: 469a mov sl, r3 - 8000904: e791 b.n 800082a <__aeabi_fdiv+0x32> - 8000906: 2d00 cmp r5, #0 - 8000908: d105 bne.n 8000916 <__aeabi_fdiv+0x11e> - 800090a: 2308 movs r3, #8 - 800090c: 4699 mov r9, r3 - 800090e: 3b06 subs r3, #6 - 8000910: 27ff movs r7, #255 ; 0xff - 8000912: 469a mov sl, r3 - 8000914: e789 b.n 800082a <__aeabi_fdiv+0x32> - 8000916: 230c movs r3, #12 - 8000918: 4699 mov r9, r3 - 800091a: 3b09 subs r3, #9 - 800091c: 27ff movs r7, #255 ; 0xff - 800091e: 469a mov sl, r3 - 8000920: e783 b.n 800082a <__aeabi_fdiv+0x32> - 8000922: 0028 movs r0, r5 - 8000924: f000 ffd8 bl 80018d8 <__clzsi2> - 8000928: 2776 movs r7, #118 ; 0x76 - 800092a: 1f43 subs r3, r0, #5 - 800092c: 409d lsls r5, r3 - 800092e: 2300 movs r3, #0 - 8000930: 427f negs r7, r7 - 8000932: 4699 mov r9, r3 - 8000934: 469a mov sl, r3 - 8000936: 1a3f subs r7, r7, r0 - 8000938: e777 b.n 800082a <__aeabi_fdiv+0x32> - 800093a: 4640 mov r0, r8 - 800093c: f000 ffcc bl 80018d8 <__clzsi2> - 8000940: 4642 mov r2, r8 - 8000942: 1f43 subs r3, r0, #5 - 8000944: 409a lsls r2, r3 - 8000946: 2376 movs r3, #118 ; 0x76 - 8000948: 425b negs r3, r3 - 800094a: 4690 mov r8, r2 - 800094c: 1a1b subs r3, r3, r0 - 800094e: 2200 movs r2, #0 - 8000950: e77d b.n 800084e <__aeabi_fdiv+0x56> - 8000952: 23ff movs r3, #255 ; 0xff - 8000954: 2203 movs r2, #3 - 8000956: e77a b.n 800084e <__aeabi_fdiv+0x56> - 8000958: 000e movs r6, r1 - 800095a: 20ff movs r0, #255 ; 0xff - 800095c: 2500 movs r5, #0 - 800095e: e7ac b.n 80008ba <__aeabi_fdiv+0xc2> - 8000960: 2001 movs r0, #1 - 8000962: 1ac0 subs r0, r0, r3 - 8000964: 281b cmp r0, #27 - 8000966: dca6 bgt.n 80008b6 <__aeabi_fdiv+0xbe> - 8000968: 379e adds r7, #158 ; 0x9e - 800096a: 002a movs r2, r5 - 800096c: 40bd lsls r5, r7 - 800096e: 40c2 lsrs r2, r0 - 8000970: 1e6b subs r3, r5, #1 - 8000972: 419d sbcs r5, r3 - 8000974: 4315 orrs r5, r2 - 8000976: 076b lsls r3, r5, #29 - 8000978: d004 beq.n 8000984 <__aeabi_fdiv+0x18c> - 800097a: 230f movs r3, #15 - 800097c: 402b ands r3, r5 - 800097e: 2b04 cmp r3, #4 - 8000980: d000 beq.n 8000984 <__aeabi_fdiv+0x18c> - 8000982: 3504 adds r5, #4 - 8000984: 016b lsls r3, r5, #5 - 8000986: d544 bpl.n 8000a12 <__aeabi_fdiv+0x21a> - 8000988: 2001 movs r0, #1 - 800098a: 2500 movs r5, #0 - 800098c: e795 b.n 80008ba <__aeabi_fdiv+0xc2> - 800098e: 20ff movs r0, #255 ; 0xff - 8000990: 2500 movs r5, #0 - 8000992: e792 b.n 80008ba <__aeabi_fdiv+0xc2> - 8000994: 2580 movs r5, #128 ; 0x80 - 8000996: 2600 movs r6, #0 - 8000998: 20ff movs r0, #255 ; 0xff - 800099a: 03ed lsls r5, r5, #15 - 800099c: e78d b.n 80008ba <__aeabi_fdiv+0xc2> - 800099e: 2300 movs r3, #0 - 80009a0: 4698 mov r8, r3 - 80009a2: 2080 movs r0, #128 ; 0x80 - 80009a4: 03c0 lsls r0, r0, #15 - 80009a6: 4205 tst r5, r0 - 80009a8: d009 beq.n 80009be <__aeabi_fdiv+0x1c6> - 80009aa: 4643 mov r3, r8 - 80009ac: 4203 tst r3, r0 - 80009ae: d106 bne.n 80009be <__aeabi_fdiv+0x1c6> - 80009b0: 4645 mov r5, r8 - 80009b2: 4305 orrs r5, r0 - 80009b4: 026d lsls r5, r5, #9 - 80009b6: 0026 movs r6, r4 - 80009b8: 20ff movs r0, #255 ; 0xff - 80009ba: 0a6d lsrs r5, r5, #9 - 80009bc: e77d b.n 80008ba <__aeabi_fdiv+0xc2> - 80009be: 2080 movs r0, #128 ; 0x80 - 80009c0: 03c0 lsls r0, r0, #15 - 80009c2: 4305 orrs r5, r0 - 80009c4: 026d lsls r5, r5, #9 - 80009c6: 20ff movs r0, #255 ; 0xff - 80009c8: 0a6d lsrs r5, r5, #9 - 80009ca: e776 b.n 80008ba <__aeabi_fdiv+0xc2> - 80009cc: 4642 mov r2, r8 - 80009ce: 016b lsls r3, r5, #5 - 80009d0: 0150 lsls r0, r2, #5 - 80009d2: 4283 cmp r3, r0 - 80009d4: d219 bcs.n 8000a0a <__aeabi_fdiv+0x212> - 80009d6: 221b movs r2, #27 - 80009d8: 2500 movs r5, #0 - 80009da: 3f01 subs r7, #1 - 80009dc: 2601 movs r6, #1 - 80009de: 001c movs r4, r3 - 80009e0: 006d lsls r5, r5, #1 - 80009e2: 005b lsls r3, r3, #1 - 80009e4: 2c00 cmp r4, #0 - 80009e6: db01 blt.n 80009ec <__aeabi_fdiv+0x1f4> - 80009e8: 4298 cmp r0, r3 - 80009ea: d801 bhi.n 80009f0 <__aeabi_fdiv+0x1f8> - 80009ec: 1a1b subs r3, r3, r0 - 80009ee: 4335 orrs r5, r6 - 80009f0: 3a01 subs r2, #1 - 80009f2: 2a00 cmp r2, #0 - 80009f4: d1f3 bne.n 80009de <__aeabi_fdiv+0x1e6> - 80009f6: 1e5a subs r2, r3, #1 - 80009f8: 4193 sbcs r3, r2 - 80009fa: 431d orrs r5, r3 - 80009fc: 003b movs r3, r7 - 80009fe: 337f adds r3, #127 ; 0x7f - 8000a00: 000e movs r6, r1 - 8000a02: 2b00 cmp r3, #0 - 8000a04: dd00 ble.n 8000a08 <__aeabi_fdiv+0x210> - 8000a06: e741 b.n 800088c <__aeabi_fdiv+0x94> - 8000a08: e7aa b.n 8000960 <__aeabi_fdiv+0x168> - 8000a0a: 221a movs r2, #26 - 8000a0c: 2501 movs r5, #1 - 8000a0e: 1a1b subs r3, r3, r0 - 8000a10: e7e4 b.n 80009dc <__aeabi_fdiv+0x1e4> - 8000a12: 01ad lsls r5, r5, #6 - 8000a14: 2000 movs r0, #0 - 8000a16: 0a6d lsrs r5, r5, #9 - 8000a18: e74f b.n 80008ba <__aeabi_fdiv+0xc2> - 8000a1a: 46c0 nop ; (mov r8, r8) - 8000a1c: 0800f7ac .word 0x0800f7ac - 8000a20: f7ffffff .word 0xf7ffffff - 8000a24: 0800f7ec .word 0x0800f7ec - -08000a28 <__eqsf2>: - 8000a28: b570 push {r4, r5, r6, lr} - 8000a2a: 0042 lsls r2, r0, #1 - 8000a2c: 0245 lsls r5, r0, #9 - 8000a2e: 024e lsls r6, r1, #9 - 8000a30: 004c lsls r4, r1, #1 - 8000a32: 0fc3 lsrs r3, r0, #31 - 8000a34: 0a6d lsrs r5, r5, #9 - 8000a36: 2001 movs r0, #1 - 8000a38: 0e12 lsrs r2, r2, #24 - 8000a3a: 0a76 lsrs r6, r6, #9 - 8000a3c: 0e24 lsrs r4, r4, #24 - 8000a3e: 0fc9 lsrs r1, r1, #31 - 8000a40: 2aff cmp r2, #255 ; 0xff - 8000a42: d006 beq.n 8000a52 <__eqsf2+0x2a> - 8000a44: 2cff cmp r4, #255 ; 0xff - 8000a46: d003 beq.n 8000a50 <__eqsf2+0x28> - 8000a48: 42a2 cmp r2, r4 - 8000a4a: d101 bne.n 8000a50 <__eqsf2+0x28> - 8000a4c: 42b5 cmp r5, r6 - 8000a4e: d006 beq.n 8000a5e <__eqsf2+0x36> - 8000a50: bd70 pop {r4, r5, r6, pc} - 8000a52: 2d00 cmp r5, #0 - 8000a54: d1fc bne.n 8000a50 <__eqsf2+0x28> - 8000a56: 2cff cmp r4, #255 ; 0xff - 8000a58: d1fa bne.n 8000a50 <__eqsf2+0x28> - 8000a5a: 2e00 cmp r6, #0 - 8000a5c: d1f8 bne.n 8000a50 <__eqsf2+0x28> - 8000a5e: 428b cmp r3, r1 - 8000a60: d006 beq.n 8000a70 <__eqsf2+0x48> - 8000a62: 2001 movs r0, #1 - 8000a64: 2a00 cmp r2, #0 - 8000a66: d1f3 bne.n 8000a50 <__eqsf2+0x28> - 8000a68: 0028 movs r0, r5 - 8000a6a: 1e43 subs r3, r0, #1 - 8000a6c: 4198 sbcs r0, r3 - 8000a6e: e7ef b.n 8000a50 <__eqsf2+0x28> - 8000a70: 2000 movs r0, #0 - 8000a72: e7ed b.n 8000a50 <__eqsf2+0x28> - -08000a74 <__gesf2>: - 8000a74: b570 push {r4, r5, r6, lr} - 8000a76: 0042 lsls r2, r0, #1 - 8000a78: 0245 lsls r5, r0, #9 - 8000a7a: 024e lsls r6, r1, #9 - 8000a7c: 004c lsls r4, r1, #1 - 8000a7e: 0fc3 lsrs r3, r0, #31 - 8000a80: 0a6d lsrs r5, r5, #9 - 8000a82: 0e12 lsrs r2, r2, #24 - 8000a84: 0a76 lsrs r6, r6, #9 - 8000a86: 0e24 lsrs r4, r4, #24 - 8000a88: 0fc8 lsrs r0, r1, #31 - 8000a8a: 2aff cmp r2, #255 ; 0xff - 8000a8c: d01b beq.n 8000ac6 <__gesf2+0x52> - 8000a8e: 2cff cmp r4, #255 ; 0xff - 8000a90: d00e beq.n 8000ab0 <__gesf2+0x3c> - 8000a92: 2a00 cmp r2, #0 - 8000a94: d11b bne.n 8000ace <__gesf2+0x5a> - 8000a96: 2c00 cmp r4, #0 - 8000a98: d101 bne.n 8000a9e <__gesf2+0x2a> - 8000a9a: 2e00 cmp r6, #0 - 8000a9c: d01c beq.n 8000ad8 <__gesf2+0x64> - 8000a9e: 2d00 cmp r5, #0 - 8000aa0: d00c beq.n 8000abc <__gesf2+0x48> - 8000aa2: 4283 cmp r3, r0 - 8000aa4: d01c beq.n 8000ae0 <__gesf2+0x6c> - 8000aa6: 2102 movs r1, #2 - 8000aa8: 1e58 subs r0, r3, #1 - 8000aaa: 4008 ands r0, r1 - 8000aac: 3801 subs r0, #1 - 8000aae: bd70 pop {r4, r5, r6, pc} - 8000ab0: 2e00 cmp r6, #0 - 8000ab2: d122 bne.n 8000afa <__gesf2+0x86> - 8000ab4: 2a00 cmp r2, #0 - 8000ab6: d1f4 bne.n 8000aa2 <__gesf2+0x2e> - 8000ab8: 2d00 cmp r5, #0 - 8000aba: d1f2 bne.n 8000aa2 <__gesf2+0x2e> - 8000abc: 2800 cmp r0, #0 - 8000abe: d1f6 bne.n 8000aae <__gesf2+0x3a> - 8000ac0: 2001 movs r0, #1 - 8000ac2: 4240 negs r0, r0 - 8000ac4: e7f3 b.n 8000aae <__gesf2+0x3a> - 8000ac6: 2d00 cmp r5, #0 - 8000ac8: d117 bne.n 8000afa <__gesf2+0x86> - 8000aca: 2cff cmp r4, #255 ; 0xff - 8000acc: d0f0 beq.n 8000ab0 <__gesf2+0x3c> - 8000ace: 2c00 cmp r4, #0 - 8000ad0: d1e7 bne.n 8000aa2 <__gesf2+0x2e> - 8000ad2: 2e00 cmp r6, #0 - 8000ad4: d1e5 bne.n 8000aa2 <__gesf2+0x2e> - 8000ad6: e7e6 b.n 8000aa6 <__gesf2+0x32> - 8000ad8: 2000 movs r0, #0 - 8000ada: 2d00 cmp r5, #0 - 8000adc: d0e7 beq.n 8000aae <__gesf2+0x3a> - 8000ade: e7e2 b.n 8000aa6 <__gesf2+0x32> - 8000ae0: 42a2 cmp r2, r4 - 8000ae2: dc05 bgt.n 8000af0 <__gesf2+0x7c> - 8000ae4: dbea blt.n 8000abc <__gesf2+0x48> - 8000ae6: 42b5 cmp r5, r6 - 8000ae8: d802 bhi.n 8000af0 <__gesf2+0x7c> - 8000aea: d3e7 bcc.n 8000abc <__gesf2+0x48> - 8000aec: 2000 movs r0, #0 - 8000aee: e7de b.n 8000aae <__gesf2+0x3a> - 8000af0: 4243 negs r3, r0 - 8000af2: 4158 adcs r0, r3 - 8000af4: 0040 lsls r0, r0, #1 - 8000af6: 3801 subs r0, #1 - 8000af8: e7d9 b.n 8000aae <__gesf2+0x3a> - 8000afa: 2002 movs r0, #2 - 8000afc: 4240 negs r0, r0 - 8000afe: e7d6 b.n 8000aae <__gesf2+0x3a> - -08000b00 <__lesf2>: - 8000b00: b570 push {r4, r5, r6, lr} - 8000b02: 0042 lsls r2, r0, #1 - 8000b04: 0245 lsls r5, r0, #9 - 8000b06: 024e lsls r6, r1, #9 - 8000b08: 004c lsls r4, r1, #1 - 8000b0a: 0fc3 lsrs r3, r0, #31 - 8000b0c: 0a6d lsrs r5, r5, #9 - 8000b0e: 0e12 lsrs r2, r2, #24 - 8000b10: 0a76 lsrs r6, r6, #9 - 8000b12: 0e24 lsrs r4, r4, #24 - 8000b14: 0fc8 lsrs r0, r1, #31 - 8000b16: 2aff cmp r2, #255 ; 0xff - 8000b18: d00b beq.n 8000b32 <__lesf2+0x32> - 8000b1a: 2cff cmp r4, #255 ; 0xff - 8000b1c: d00d beq.n 8000b3a <__lesf2+0x3a> - 8000b1e: 2a00 cmp r2, #0 - 8000b20: d11f bne.n 8000b62 <__lesf2+0x62> - 8000b22: 2c00 cmp r4, #0 - 8000b24: d116 bne.n 8000b54 <__lesf2+0x54> - 8000b26: 2e00 cmp r6, #0 - 8000b28: d114 bne.n 8000b54 <__lesf2+0x54> - 8000b2a: 2000 movs r0, #0 - 8000b2c: 2d00 cmp r5, #0 - 8000b2e: d010 beq.n 8000b52 <__lesf2+0x52> - 8000b30: e009 b.n 8000b46 <__lesf2+0x46> - 8000b32: 2d00 cmp r5, #0 - 8000b34: d10c bne.n 8000b50 <__lesf2+0x50> - 8000b36: 2cff cmp r4, #255 ; 0xff - 8000b38: d113 bne.n 8000b62 <__lesf2+0x62> - 8000b3a: 2e00 cmp r6, #0 - 8000b3c: d108 bne.n 8000b50 <__lesf2+0x50> - 8000b3e: 2a00 cmp r2, #0 - 8000b40: d008 beq.n 8000b54 <__lesf2+0x54> - 8000b42: 4283 cmp r3, r0 - 8000b44: d012 beq.n 8000b6c <__lesf2+0x6c> - 8000b46: 2102 movs r1, #2 - 8000b48: 1e58 subs r0, r3, #1 - 8000b4a: 4008 ands r0, r1 - 8000b4c: 3801 subs r0, #1 - 8000b4e: e000 b.n 8000b52 <__lesf2+0x52> - 8000b50: 2002 movs r0, #2 - 8000b52: bd70 pop {r4, r5, r6, pc} - 8000b54: 2d00 cmp r5, #0 - 8000b56: d1f4 bne.n 8000b42 <__lesf2+0x42> - 8000b58: 2800 cmp r0, #0 - 8000b5a: d1fa bne.n 8000b52 <__lesf2+0x52> - 8000b5c: 2001 movs r0, #1 - 8000b5e: 4240 negs r0, r0 - 8000b60: e7f7 b.n 8000b52 <__lesf2+0x52> - 8000b62: 2c00 cmp r4, #0 - 8000b64: d1ed bne.n 8000b42 <__lesf2+0x42> - 8000b66: 2e00 cmp r6, #0 - 8000b68: d1eb bne.n 8000b42 <__lesf2+0x42> - 8000b6a: e7ec b.n 8000b46 <__lesf2+0x46> - 8000b6c: 42a2 cmp r2, r4 - 8000b6e: dc05 bgt.n 8000b7c <__lesf2+0x7c> - 8000b70: dbf2 blt.n 8000b58 <__lesf2+0x58> - 8000b72: 42b5 cmp r5, r6 - 8000b74: d802 bhi.n 8000b7c <__lesf2+0x7c> - 8000b76: d3ef bcc.n 8000b58 <__lesf2+0x58> - 8000b78: 2000 movs r0, #0 - 8000b7a: e7ea b.n 8000b52 <__lesf2+0x52> - 8000b7c: 4243 negs r3, r0 - 8000b7e: 4158 adcs r0, r3 - 8000b80: 0040 lsls r0, r0, #1 - 8000b82: 3801 subs r0, #1 - 8000b84: e7e5 b.n 8000b52 <__lesf2+0x52> - 8000b86: 46c0 nop ; (mov r8, r8) - -08000b88 <__aeabi_fmul>: - 8000b88: b5f0 push {r4, r5, r6, r7, lr} - 8000b8a: 464f mov r7, r9 - 8000b8c: 4646 mov r6, r8 - 8000b8e: 46d6 mov lr, sl - 8000b90: 0244 lsls r4, r0, #9 - 8000b92: 0045 lsls r5, r0, #1 - 8000b94: b5c0 push {r6, r7, lr} - 8000b96: 0a64 lsrs r4, r4, #9 - 8000b98: 1c0f adds r7, r1, #0 - 8000b9a: 0e2d lsrs r5, r5, #24 - 8000b9c: 0fc6 lsrs r6, r0, #31 - 8000b9e: 2d00 cmp r5, #0 - 8000ba0: d100 bne.n 8000ba4 <__aeabi_fmul+0x1c> - 8000ba2: e08d b.n 8000cc0 <__aeabi_fmul+0x138> - 8000ba4: 2dff cmp r5, #255 ; 0xff - 8000ba6: d100 bne.n 8000baa <__aeabi_fmul+0x22> - 8000ba8: e092 b.n 8000cd0 <__aeabi_fmul+0x148> - 8000baa: 2300 movs r3, #0 - 8000bac: 2080 movs r0, #128 ; 0x80 - 8000bae: 4699 mov r9, r3 - 8000bb0: 469a mov sl, r3 - 8000bb2: 00e4 lsls r4, r4, #3 - 8000bb4: 04c0 lsls r0, r0, #19 - 8000bb6: 4304 orrs r4, r0 - 8000bb8: 3d7f subs r5, #127 ; 0x7f - 8000bba: 0278 lsls r0, r7, #9 - 8000bbc: 0a43 lsrs r3, r0, #9 - 8000bbe: 4698 mov r8, r3 - 8000bc0: 007b lsls r3, r7, #1 - 8000bc2: 0e1b lsrs r3, r3, #24 - 8000bc4: 0fff lsrs r7, r7, #31 - 8000bc6: 2b00 cmp r3, #0 - 8000bc8: d100 bne.n 8000bcc <__aeabi_fmul+0x44> - 8000bca: e070 b.n 8000cae <__aeabi_fmul+0x126> - 8000bcc: 2bff cmp r3, #255 ; 0xff - 8000bce: d100 bne.n 8000bd2 <__aeabi_fmul+0x4a> - 8000bd0: e086 b.n 8000ce0 <__aeabi_fmul+0x158> - 8000bd2: 4642 mov r2, r8 - 8000bd4: 00d0 lsls r0, r2, #3 - 8000bd6: 2280 movs r2, #128 ; 0x80 - 8000bd8: 3b7f subs r3, #127 ; 0x7f - 8000bda: 18ed adds r5, r5, r3 - 8000bdc: 2300 movs r3, #0 - 8000bde: 04d2 lsls r2, r2, #19 - 8000be0: 4302 orrs r2, r0 - 8000be2: 4690 mov r8, r2 - 8000be4: 469c mov ip, r3 - 8000be6: 0031 movs r1, r6 - 8000be8: 464b mov r3, r9 - 8000bea: 4079 eors r1, r7 - 8000bec: 1c68 adds r0, r5, #1 - 8000bee: 2b0f cmp r3, #15 - 8000bf0: d81c bhi.n 8000c2c <__aeabi_fmul+0xa4> - 8000bf2: 4a76 ldr r2, [pc, #472] ; (8000dcc <__aeabi_fmul+0x244>) - 8000bf4: 009b lsls r3, r3, #2 - 8000bf6: 58d3 ldr r3, [r2, r3] - 8000bf8: 469f mov pc, r3 - 8000bfa: 0039 movs r1, r7 - 8000bfc: 4644 mov r4, r8 - 8000bfe: 46e2 mov sl, ip - 8000c00: 4653 mov r3, sl - 8000c02: 2b02 cmp r3, #2 - 8000c04: d00f beq.n 8000c26 <__aeabi_fmul+0x9e> - 8000c06: 2b03 cmp r3, #3 - 8000c08: d100 bne.n 8000c0c <__aeabi_fmul+0x84> - 8000c0a: e0d7 b.n 8000dbc <__aeabi_fmul+0x234> - 8000c0c: 2b01 cmp r3, #1 - 8000c0e: d137 bne.n 8000c80 <__aeabi_fmul+0xf8> - 8000c10: 2000 movs r0, #0 - 8000c12: 2400 movs r4, #0 - 8000c14: 05c0 lsls r0, r0, #23 - 8000c16: 4320 orrs r0, r4 - 8000c18: 07c9 lsls r1, r1, #31 - 8000c1a: 4308 orrs r0, r1 - 8000c1c: bce0 pop {r5, r6, r7} - 8000c1e: 46ba mov sl, r7 - 8000c20: 46b1 mov r9, r6 - 8000c22: 46a8 mov r8, r5 - 8000c24: bdf0 pop {r4, r5, r6, r7, pc} - 8000c26: 20ff movs r0, #255 ; 0xff - 8000c28: 2400 movs r4, #0 - 8000c2a: e7f3 b.n 8000c14 <__aeabi_fmul+0x8c> - 8000c2c: 0c26 lsrs r6, r4, #16 - 8000c2e: 0424 lsls r4, r4, #16 - 8000c30: 0c22 lsrs r2, r4, #16 - 8000c32: 4644 mov r4, r8 - 8000c34: 0424 lsls r4, r4, #16 - 8000c36: 0c24 lsrs r4, r4, #16 - 8000c38: 4643 mov r3, r8 - 8000c3a: 0027 movs r7, r4 - 8000c3c: 0c1b lsrs r3, r3, #16 - 8000c3e: 4357 muls r7, r2 - 8000c40: 4374 muls r4, r6 - 8000c42: 435a muls r2, r3 - 8000c44: 435e muls r6, r3 - 8000c46: 1912 adds r2, r2, r4 - 8000c48: 0c3b lsrs r3, r7, #16 - 8000c4a: 189b adds r3, r3, r2 - 8000c4c: 429c cmp r4, r3 - 8000c4e: d903 bls.n 8000c58 <__aeabi_fmul+0xd0> - 8000c50: 2280 movs r2, #128 ; 0x80 - 8000c52: 0252 lsls r2, r2, #9 - 8000c54: 4694 mov ip, r2 - 8000c56: 4466 add r6, ip - 8000c58: 043f lsls r7, r7, #16 - 8000c5a: 041a lsls r2, r3, #16 - 8000c5c: 0c3f lsrs r7, r7, #16 - 8000c5e: 19d2 adds r2, r2, r7 - 8000c60: 0194 lsls r4, r2, #6 - 8000c62: 1e67 subs r7, r4, #1 - 8000c64: 41bc sbcs r4, r7 - 8000c66: 0c1b lsrs r3, r3, #16 - 8000c68: 0e92 lsrs r2, r2, #26 - 8000c6a: 199b adds r3, r3, r6 - 8000c6c: 4314 orrs r4, r2 - 8000c6e: 019b lsls r3, r3, #6 - 8000c70: 431c orrs r4, r3 - 8000c72: 011b lsls r3, r3, #4 - 8000c74: d400 bmi.n 8000c78 <__aeabi_fmul+0xf0> - 8000c76: e09b b.n 8000db0 <__aeabi_fmul+0x228> - 8000c78: 2301 movs r3, #1 - 8000c7a: 0862 lsrs r2, r4, #1 - 8000c7c: 401c ands r4, r3 - 8000c7e: 4314 orrs r4, r2 - 8000c80: 0002 movs r2, r0 - 8000c82: 327f adds r2, #127 ; 0x7f - 8000c84: 2a00 cmp r2, #0 - 8000c86: dd64 ble.n 8000d52 <__aeabi_fmul+0x1ca> - 8000c88: 0763 lsls r3, r4, #29 - 8000c8a: d004 beq.n 8000c96 <__aeabi_fmul+0x10e> - 8000c8c: 230f movs r3, #15 - 8000c8e: 4023 ands r3, r4 - 8000c90: 2b04 cmp r3, #4 - 8000c92: d000 beq.n 8000c96 <__aeabi_fmul+0x10e> - 8000c94: 3404 adds r4, #4 - 8000c96: 0123 lsls r3, r4, #4 - 8000c98: d503 bpl.n 8000ca2 <__aeabi_fmul+0x11a> - 8000c9a: 0002 movs r2, r0 - 8000c9c: 4b4c ldr r3, [pc, #304] ; (8000dd0 <__aeabi_fmul+0x248>) - 8000c9e: 3280 adds r2, #128 ; 0x80 - 8000ca0: 401c ands r4, r3 - 8000ca2: 2afe cmp r2, #254 ; 0xfe - 8000ca4: dcbf bgt.n 8000c26 <__aeabi_fmul+0x9e> - 8000ca6: 01a4 lsls r4, r4, #6 - 8000ca8: 0a64 lsrs r4, r4, #9 - 8000caa: b2d0 uxtb r0, r2 - 8000cac: e7b2 b.n 8000c14 <__aeabi_fmul+0x8c> - 8000cae: 4643 mov r3, r8 - 8000cb0: 2b00 cmp r3, #0 - 8000cb2: d13d bne.n 8000d30 <__aeabi_fmul+0x1a8> - 8000cb4: 464a mov r2, r9 - 8000cb6: 3301 adds r3, #1 - 8000cb8: 431a orrs r2, r3 - 8000cba: 4691 mov r9, r2 - 8000cbc: 469c mov ip, r3 - 8000cbe: e792 b.n 8000be6 <__aeabi_fmul+0x5e> - 8000cc0: 2c00 cmp r4, #0 - 8000cc2: d129 bne.n 8000d18 <__aeabi_fmul+0x190> - 8000cc4: 2304 movs r3, #4 - 8000cc6: 4699 mov r9, r3 - 8000cc8: 3b03 subs r3, #3 - 8000cca: 2500 movs r5, #0 - 8000ccc: 469a mov sl, r3 - 8000cce: e774 b.n 8000bba <__aeabi_fmul+0x32> - 8000cd0: 2c00 cmp r4, #0 - 8000cd2: d11b bne.n 8000d0c <__aeabi_fmul+0x184> - 8000cd4: 2308 movs r3, #8 - 8000cd6: 4699 mov r9, r3 - 8000cd8: 3b06 subs r3, #6 - 8000cda: 25ff movs r5, #255 ; 0xff - 8000cdc: 469a mov sl, r3 - 8000cde: e76c b.n 8000bba <__aeabi_fmul+0x32> - 8000ce0: 4643 mov r3, r8 - 8000ce2: 35ff adds r5, #255 ; 0xff - 8000ce4: 2b00 cmp r3, #0 - 8000ce6: d10b bne.n 8000d00 <__aeabi_fmul+0x178> - 8000ce8: 2302 movs r3, #2 - 8000cea: 464a mov r2, r9 - 8000cec: 431a orrs r2, r3 - 8000cee: 4691 mov r9, r2 - 8000cf0: 469c mov ip, r3 - 8000cf2: e778 b.n 8000be6 <__aeabi_fmul+0x5e> - 8000cf4: 4653 mov r3, sl - 8000cf6: 0031 movs r1, r6 - 8000cf8: 2b02 cmp r3, #2 - 8000cfa: d000 beq.n 8000cfe <__aeabi_fmul+0x176> - 8000cfc: e783 b.n 8000c06 <__aeabi_fmul+0x7e> - 8000cfe: e792 b.n 8000c26 <__aeabi_fmul+0x9e> - 8000d00: 2303 movs r3, #3 - 8000d02: 464a mov r2, r9 - 8000d04: 431a orrs r2, r3 - 8000d06: 4691 mov r9, r2 - 8000d08: 469c mov ip, r3 - 8000d0a: e76c b.n 8000be6 <__aeabi_fmul+0x5e> - 8000d0c: 230c movs r3, #12 - 8000d0e: 4699 mov r9, r3 - 8000d10: 3b09 subs r3, #9 - 8000d12: 25ff movs r5, #255 ; 0xff - 8000d14: 469a mov sl, r3 - 8000d16: e750 b.n 8000bba <__aeabi_fmul+0x32> - 8000d18: 0020 movs r0, r4 - 8000d1a: f000 fddd bl 80018d8 <__clzsi2> - 8000d1e: 2576 movs r5, #118 ; 0x76 - 8000d20: 1f43 subs r3, r0, #5 - 8000d22: 409c lsls r4, r3 - 8000d24: 2300 movs r3, #0 - 8000d26: 426d negs r5, r5 - 8000d28: 4699 mov r9, r3 - 8000d2a: 469a mov sl, r3 - 8000d2c: 1a2d subs r5, r5, r0 - 8000d2e: e744 b.n 8000bba <__aeabi_fmul+0x32> - 8000d30: 4640 mov r0, r8 - 8000d32: f000 fdd1 bl 80018d8 <__clzsi2> - 8000d36: 4642 mov r2, r8 - 8000d38: 1f43 subs r3, r0, #5 - 8000d3a: 409a lsls r2, r3 - 8000d3c: 2300 movs r3, #0 - 8000d3e: 1a2d subs r5, r5, r0 - 8000d40: 4690 mov r8, r2 - 8000d42: 469c mov ip, r3 - 8000d44: 3d76 subs r5, #118 ; 0x76 - 8000d46: e74e b.n 8000be6 <__aeabi_fmul+0x5e> - 8000d48: 2480 movs r4, #128 ; 0x80 - 8000d4a: 2100 movs r1, #0 - 8000d4c: 20ff movs r0, #255 ; 0xff - 8000d4e: 03e4 lsls r4, r4, #15 - 8000d50: e760 b.n 8000c14 <__aeabi_fmul+0x8c> - 8000d52: 2301 movs r3, #1 - 8000d54: 1a9b subs r3, r3, r2 - 8000d56: 2b1b cmp r3, #27 - 8000d58: dd00 ble.n 8000d5c <__aeabi_fmul+0x1d4> - 8000d5a: e759 b.n 8000c10 <__aeabi_fmul+0x88> - 8000d5c: 0022 movs r2, r4 - 8000d5e: 309e adds r0, #158 ; 0x9e - 8000d60: 40da lsrs r2, r3 - 8000d62: 4084 lsls r4, r0 - 8000d64: 0013 movs r3, r2 - 8000d66: 1e62 subs r2, r4, #1 - 8000d68: 4194 sbcs r4, r2 - 8000d6a: 431c orrs r4, r3 - 8000d6c: 0763 lsls r3, r4, #29 - 8000d6e: d004 beq.n 8000d7a <__aeabi_fmul+0x1f2> - 8000d70: 230f movs r3, #15 - 8000d72: 4023 ands r3, r4 - 8000d74: 2b04 cmp r3, #4 - 8000d76: d000 beq.n 8000d7a <__aeabi_fmul+0x1f2> - 8000d78: 3404 adds r4, #4 - 8000d7a: 0163 lsls r3, r4, #5 - 8000d7c: d51a bpl.n 8000db4 <__aeabi_fmul+0x22c> - 8000d7e: 2001 movs r0, #1 - 8000d80: 2400 movs r4, #0 - 8000d82: e747 b.n 8000c14 <__aeabi_fmul+0x8c> - 8000d84: 2080 movs r0, #128 ; 0x80 - 8000d86: 03c0 lsls r0, r0, #15 - 8000d88: 4204 tst r4, r0 - 8000d8a: d009 beq.n 8000da0 <__aeabi_fmul+0x218> - 8000d8c: 4643 mov r3, r8 - 8000d8e: 4203 tst r3, r0 - 8000d90: d106 bne.n 8000da0 <__aeabi_fmul+0x218> - 8000d92: 4644 mov r4, r8 - 8000d94: 4304 orrs r4, r0 - 8000d96: 0264 lsls r4, r4, #9 - 8000d98: 0039 movs r1, r7 - 8000d9a: 20ff movs r0, #255 ; 0xff - 8000d9c: 0a64 lsrs r4, r4, #9 - 8000d9e: e739 b.n 8000c14 <__aeabi_fmul+0x8c> - 8000da0: 2080 movs r0, #128 ; 0x80 - 8000da2: 03c0 lsls r0, r0, #15 - 8000da4: 4304 orrs r4, r0 - 8000da6: 0264 lsls r4, r4, #9 - 8000da8: 0031 movs r1, r6 - 8000daa: 20ff movs r0, #255 ; 0xff - 8000dac: 0a64 lsrs r4, r4, #9 - 8000dae: e731 b.n 8000c14 <__aeabi_fmul+0x8c> - 8000db0: 0028 movs r0, r5 - 8000db2: e765 b.n 8000c80 <__aeabi_fmul+0xf8> - 8000db4: 01a4 lsls r4, r4, #6 - 8000db6: 2000 movs r0, #0 - 8000db8: 0a64 lsrs r4, r4, #9 - 8000dba: e72b b.n 8000c14 <__aeabi_fmul+0x8c> - 8000dbc: 2080 movs r0, #128 ; 0x80 - 8000dbe: 03c0 lsls r0, r0, #15 - 8000dc0: 4304 orrs r4, r0 - 8000dc2: 0264 lsls r4, r4, #9 - 8000dc4: 20ff movs r0, #255 ; 0xff - 8000dc6: 0a64 lsrs r4, r4, #9 - 8000dc8: e724 b.n 8000c14 <__aeabi_fmul+0x8c> - 8000dca: 46c0 nop ; (mov r8, r8) - 8000dcc: 0800f82c .word 0x0800f82c - 8000dd0: f7ffffff .word 0xf7ffffff - -08000dd4 <__aeabi_fsub>: - 8000dd4: b5f8 push {r3, r4, r5, r6, r7, lr} - 8000dd6: 46ce mov lr, r9 - 8000dd8: 4647 mov r7, r8 - 8000dda: 0243 lsls r3, r0, #9 - 8000ddc: 0a5b lsrs r3, r3, #9 - 8000dde: 024e lsls r6, r1, #9 - 8000de0: 00da lsls r2, r3, #3 - 8000de2: 4694 mov ip, r2 - 8000de4: 0a72 lsrs r2, r6, #9 - 8000de6: 4691 mov r9, r2 - 8000de8: 0045 lsls r5, r0, #1 - 8000dea: 004a lsls r2, r1, #1 - 8000dec: b580 push {r7, lr} - 8000dee: 0e2d lsrs r5, r5, #24 - 8000df0: 001f movs r7, r3 - 8000df2: 0fc4 lsrs r4, r0, #31 - 8000df4: 0e12 lsrs r2, r2, #24 - 8000df6: 0fc9 lsrs r1, r1, #31 - 8000df8: 09b6 lsrs r6, r6, #6 - 8000dfa: 2aff cmp r2, #255 ; 0xff - 8000dfc: d05b beq.n 8000eb6 <__aeabi_fsub+0xe2> - 8000dfe: 2001 movs r0, #1 - 8000e00: 4041 eors r1, r0 - 8000e02: 428c cmp r4, r1 - 8000e04: d039 beq.n 8000e7a <__aeabi_fsub+0xa6> - 8000e06: 1aa8 subs r0, r5, r2 - 8000e08: 2800 cmp r0, #0 - 8000e0a: dd5a ble.n 8000ec2 <__aeabi_fsub+0xee> - 8000e0c: 2a00 cmp r2, #0 - 8000e0e: d06a beq.n 8000ee6 <__aeabi_fsub+0x112> - 8000e10: 2dff cmp r5, #255 ; 0xff - 8000e12: d100 bne.n 8000e16 <__aeabi_fsub+0x42> - 8000e14: e0d9 b.n 8000fca <__aeabi_fsub+0x1f6> - 8000e16: 2280 movs r2, #128 ; 0x80 - 8000e18: 04d2 lsls r2, r2, #19 - 8000e1a: 4316 orrs r6, r2 - 8000e1c: 281b cmp r0, #27 - 8000e1e: dc00 bgt.n 8000e22 <__aeabi_fsub+0x4e> - 8000e20: e0e9 b.n 8000ff6 <__aeabi_fsub+0x222> - 8000e22: 2001 movs r0, #1 - 8000e24: 4663 mov r3, ip - 8000e26: 1a18 subs r0, r3, r0 - 8000e28: 0143 lsls r3, r0, #5 - 8000e2a: d400 bmi.n 8000e2e <__aeabi_fsub+0x5a> - 8000e2c: e0b4 b.n 8000f98 <__aeabi_fsub+0x1c4> - 8000e2e: 0180 lsls r0, r0, #6 - 8000e30: 0987 lsrs r7, r0, #6 - 8000e32: 0038 movs r0, r7 - 8000e34: f000 fd50 bl 80018d8 <__clzsi2> - 8000e38: 3805 subs r0, #5 - 8000e3a: 4087 lsls r7, r0 - 8000e3c: 4285 cmp r5, r0 - 8000e3e: dc00 bgt.n 8000e42 <__aeabi_fsub+0x6e> - 8000e40: e0cc b.n 8000fdc <__aeabi_fsub+0x208> - 8000e42: 1a2d subs r5, r5, r0 - 8000e44: 48b5 ldr r0, [pc, #724] ; (800111c <__aeabi_fsub+0x348>) - 8000e46: 4038 ands r0, r7 - 8000e48: 0743 lsls r3, r0, #29 - 8000e4a: d004 beq.n 8000e56 <__aeabi_fsub+0x82> - 8000e4c: 230f movs r3, #15 - 8000e4e: 4003 ands r3, r0 - 8000e50: 2b04 cmp r3, #4 - 8000e52: d000 beq.n 8000e56 <__aeabi_fsub+0x82> - 8000e54: 3004 adds r0, #4 - 8000e56: 0143 lsls r3, r0, #5 - 8000e58: d400 bmi.n 8000e5c <__aeabi_fsub+0x88> - 8000e5a: e0a0 b.n 8000f9e <__aeabi_fsub+0x1ca> - 8000e5c: 1c6a adds r2, r5, #1 - 8000e5e: 2dfe cmp r5, #254 ; 0xfe - 8000e60: d100 bne.n 8000e64 <__aeabi_fsub+0x90> - 8000e62: e08d b.n 8000f80 <__aeabi_fsub+0x1ac> - 8000e64: 0180 lsls r0, r0, #6 - 8000e66: 0a47 lsrs r7, r0, #9 - 8000e68: b2d2 uxtb r2, r2 - 8000e6a: 05d0 lsls r0, r2, #23 - 8000e6c: 4338 orrs r0, r7 - 8000e6e: 07e4 lsls r4, r4, #31 - 8000e70: 4320 orrs r0, r4 - 8000e72: bcc0 pop {r6, r7} - 8000e74: 46b9 mov r9, r7 - 8000e76: 46b0 mov r8, r6 - 8000e78: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8000e7a: 1aa8 subs r0, r5, r2 - 8000e7c: 4680 mov r8, r0 - 8000e7e: 2800 cmp r0, #0 - 8000e80: dd45 ble.n 8000f0e <__aeabi_fsub+0x13a> - 8000e82: 2a00 cmp r2, #0 - 8000e84: d070 beq.n 8000f68 <__aeabi_fsub+0x194> - 8000e86: 2dff cmp r5, #255 ; 0xff - 8000e88: d100 bne.n 8000e8c <__aeabi_fsub+0xb8> - 8000e8a: e09e b.n 8000fca <__aeabi_fsub+0x1f6> - 8000e8c: 2380 movs r3, #128 ; 0x80 - 8000e8e: 04db lsls r3, r3, #19 - 8000e90: 431e orrs r6, r3 - 8000e92: 4643 mov r3, r8 - 8000e94: 2b1b cmp r3, #27 - 8000e96: dc00 bgt.n 8000e9a <__aeabi_fsub+0xc6> - 8000e98: e0d2 b.n 8001040 <__aeabi_fsub+0x26c> - 8000e9a: 2001 movs r0, #1 - 8000e9c: 4460 add r0, ip - 8000e9e: 0143 lsls r3, r0, #5 - 8000ea0: d57a bpl.n 8000f98 <__aeabi_fsub+0x1c4> - 8000ea2: 3501 adds r5, #1 - 8000ea4: 2dff cmp r5, #255 ; 0xff - 8000ea6: d06b beq.n 8000f80 <__aeabi_fsub+0x1ac> - 8000ea8: 2301 movs r3, #1 - 8000eaa: 4a9d ldr r2, [pc, #628] ; (8001120 <__aeabi_fsub+0x34c>) - 8000eac: 4003 ands r3, r0 - 8000eae: 0840 lsrs r0, r0, #1 - 8000eb0: 4010 ands r0, r2 - 8000eb2: 4318 orrs r0, r3 - 8000eb4: e7c8 b.n 8000e48 <__aeabi_fsub+0x74> - 8000eb6: 2e00 cmp r6, #0 - 8000eb8: d020 beq.n 8000efc <__aeabi_fsub+0x128> - 8000eba: 428c cmp r4, r1 - 8000ebc: d023 beq.n 8000f06 <__aeabi_fsub+0x132> - 8000ebe: 0028 movs r0, r5 - 8000ec0: 38ff subs r0, #255 ; 0xff - 8000ec2: 2800 cmp r0, #0 - 8000ec4: d039 beq.n 8000f3a <__aeabi_fsub+0x166> - 8000ec6: 1b57 subs r7, r2, r5 - 8000ec8: 2d00 cmp r5, #0 - 8000eca: d000 beq.n 8000ece <__aeabi_fsub+0xfa> - 8000ecc: e09d b.n 800100a <__aeabi_fsub+0x236> - 8000ece: 4663 mov r3, ip - 8000ed0: 2b00 cmp r3, #0 - 8000ed2: d100 bne.n 8000ed6 <__aeabi_fsub+0x102> - 8000ed4: e0db b.n 800108e <__aeabi_fsub+0x2ba> - 8000ed6: 1e7b subs r3, r7, #1 - 8000ed8: 2f01 cmp r7, #1 - 8000eda: d100 bne.n 8000ede <__aeabi_fsub+0x10a> - 8000edc: e10d b.n 80010fa <__aeabi_fsub+0x326> - 8000ede: 2fff cmp r7, #255 ; 0xff - 8000ee0: d071 beq.n 8000fc6 <__aeabi_fsub+0x1f2> - 8000ee2: 001f movs r7, r3 - 8000ee4: e098 b.n 8001018 <__aeabi_fsub+0x244> - 8000ee6: 2e00 cmp r6, #0 - 8000ee8: d100 bne.n 8000eec <__aeabi_fsub+0x118> - 8000eea: e0a7 b.n 800103c <__aeabi_fsub+0x268> - 8000eec: 1e42 subs r2, r0, #1 - 8000eee: 2801 cmp r0, #1 - 8000ef0: d100 bne.n 8000ef4 <__aeabi_fsub+0x120> - 8000ef2: e0e6 b.n 80010c2 <__aeabi_fsub+0x2ee> - 8000ef4: 28ff cmp r0, #255 ; 0xff - 8000ef6: d068 beq.n 8000fca <__aeabi_fsub+0x1f6> - 8000ef8: 0010 movs r0, r2 - 8000efa: e78f b.n 8000e1c <__aeabi_fsub+0x48> - 8000efc: 2001 movs r0, #1 - 8000efe: 4041 eors r1, r0 - 8000f00: 42a1 cmp r1, r4 - 8000f02: d000 beq.n 8000f06 <__aeabi_fsub+0x132> - 8000f04: e77f b.n 8000e06 <__aeabi_fsub+0x32> - 8000f06: 20ff movs r0, #255 ; 0xff - 8000f08: 4240 negs r0, r0 - 8000f0a: 4680 mov r8, r0 - 8000f0c: 44a8 add r8, r5 - 8000f0e: 4640 mov r0, r8 - 8000f10: 2800 cmp r0, #0 - 8000f12: d038 beq.n 8000f86 <__aeabi_fsub+0x1b2> - 8000f14: 1b51 subs r1, r2, r5 - 8000f16: 2d00 cmp r5, #0 - 8000f18: d100 bne.n 8000f1c <__aeabi_fsub+0x148> - 8000f1a: e0ae b.n 800107a <__aeabi_fsub+0x2a6> - 8000f1c: 2aff cmp r2, #255 ; 0xff - 8000f1e: d100 bne.n 8000f22 <__aeabi_fsub+0x14e> - 8000f20: e0df b.n 80010e2 <__aeabi_fsub+0x30e> - 8000f22: 2380 movs r3, #128 ; 0x80 - 8000f24: 4660 mov r0, ip - 8000f26: 04db lsls r3, r3, #19 - 8000f28: 4318 orrs r0, r3 - 8000f2a: 4684 mov ip, r0 - 8000f2c: 291b cmp r1, #27 - 8000f2e: dc00 bgt.n 8000f32 <__aeabi_fsub+0x15e> - 8000f30: e0d9 b.n 80010e6 <__aeabi_fsub+0x312> - 8000f32: 2001 movs r0, #1 - 8000f34: 0015 movs r5, r2 - 8000f36: 1980 adds r0, r0, r6 - 8000f38: e7b1 b.n 8000e9e <__aeabi_fsub+0xca> - 8000f3a: 20fe movs r0, #254 ; 0xfe - 8000f3c: 1c6a adds r2, r5, #1 - 8000f3e: 4210 tst r0, r2 - 8000f40: d171 bne.n 8001026 <__aeabi_fsub+0x252> - 8000f42: 2d00 cmp r5, #0 - 8000f44: d000 beq.n 8000f48 <__aeabi_fsub+0x174> - 8000f46: e0a6 b.n 8001096 <__aeabi_fsub+0x2c2> - 8000f48: 4663 mov r3, ip - 8000f4a: 2b00 cmp r3, #0 - 8000f4c: d100 bne.n 8000f50 <__aeabi_fsub+0x17c> - 8000f4e: e0d9 b.n 8001104 <__aeabi_fsub+0x330> - 8000f50: 2200 movs r2, #0 - 8000f52: 2e00 cmp r6, #0 - 8000f54: d100 bne.n 8000f58 <__aeabi_fsub+0x184> - 8000f56: e788 b.n 8000e6a <__aeabi_fsub+0x96> - 8000f58: 1b98 subs r0, r3, r6 - 8000f5a: 0143 lsls r3, r0, #5 - 8000f5c: d400 bmi.n 8000f60 <__aeabi_fsub+0x18c> - 8000f5e: e0e1 b.n 8001124 <__aeabi_fsub+0x350> - 8000f60: 4663 mov r3, ip - 8000f62: 000c movs r4, r1 - 8000f64: 1af0 subs r0, r6, r3 - 8000f66: e76f b.n 8000e48 <__aeabi_fsub+0x74> - 8000f68: 2e00 cmp r6, #0 - 8000f6a: d100 bne.n 8000f6e <__aeabi_fsub+0x19a> - 8000f6c: e0b7 b.n 80010de <__aeabi_fsub+0x30a> - 8000f6e: 0002 movs r2, r0 - 8000f70: 3a01 subs r2, #1 - 8000f72: 2801 cmp r0, #1 - 8000f74: d100 bne.n 8000f78 <__aeabi_fsub+0x1a4> - 8000f76: e09c b.n 80010b2 <__aeabi_fsub+0x2de> - 8000f78: 28ff cmp r0, #255 ; 0xff - 8000f7a: d026 beq.n 8000fca <__aeabi_fsub+0x1f6> - 8000f7c: 4690 mov r8, r2 - 8000f7e: e788 b.n 8000e92 <__aeabi_fsub+0xbe> - 8000f80: 22ff movs r2, #255 ; 0xff - 8000f82: 2700 movs r7, #0 - 8000f84: e771 b.n 8000e6a <__aeabi_fsub+0x96> - 8000f86: 20fe movs r0, #254 ; 0xfe - 8000f88: 1c6a adds r2, r5, #1 - 8000f8a: 4210 tst r0, r2 - 8000f8c: d064 beq.n 8001058 <__aeabi_fsub+0x284> - 8000f8e: 2aff cmp r2, #255 ; 0xff - 8000f90: d0f6 beq.n 8000f80 <__aeabi_fsub+0x1ac> - 8000f92: 0015 movs r5, r2 - 8000f94: 4466 add r6, ip - 8000f96: 0870 lsrs r0, r6, #1 - 8000f98: 0743 lsls r3, r0, #29 - 8000f9a: d000 beq.n 8000f9e <__aeabi_fsub+0x1ca> - 8000f9c: e756 b.n 8000e4c <__aeabi_fsub+0x78> - 8000f9e: 08c3 lsrs r3, r0, #3 - 8000fa0: 2dff cmp r5, #255 ; 0xff - 8000fa2: d012 beq.n 8000fca <__aeabi_fsub+0x1f6> - 8000fa4: 025b lsls r3, r3, #9 - 8000fa6: 0a5f lsrs r7, r3, #9 - 8000fa8: b2ea uxtb r2, r5 - 8000faa: e75e b.n 8000e6a <__aeabi_fsub+0x96> - 8000fac: 4662 mov r2, ip - 8000fae: 2a00 cmp r2, #0 - 8000fb0: d100 bne.n 8000fb4 <__aeabi_fsub+0x1e0> - 8000fb2: e096 b.n 80010e2 <__aeabi_fsub+0x30e> - 8000fb4: 2e00 cmp r6, #0 - 8000fb6: d008 beq.n 8000fca <__aeabi_fsub+0x1f6> - 8000fb8: 2280 movs r2, #128 ; 0x80 - 8000fba: 03d2 lsls r2, r2, #15 - 8000fbc: 4213 tst r3, r2 - 8000fbe: d004 beq.n 8000fca <__aeabi_fsub+0x1f6> - 8000fc0: 4648 mov r0, r9 - 8000fc2: 4210 tst r0, r2 - 8000fc4: d101 bne.n 8000fca <__aeabi_fsub+0x1f6> - 8000fc6: 000c movs r4, r1 - 8000fc8: 464b mov r3, r9 - 8000fca: 2b00 cmp r3, #0 - 8000fcc: d0d8 beq.n 8000f80 <__aeabi_fsub+0x1ac> - 8000fce: 2780 movs r7, #128 ; 0x80 - 8000fd0: 03ff lsls r7, r7, #15 - 8000fd2: 431f orrs r7, r3 - 8000fd4: 027f lsls r7, r7, #9 - 8000fd6: 22ff movs r2, #255 ; 0xff - 8000fd8: 0a7f lsrs r7, r7, #9 - 8000fda: e746 b.n 8000e6a <__aeabi_fsub+0x96> - 8000fdc: 2320 movs r3, #32 - 8000fde: 003a movs r2, r7 - 8000fe0: 1b45 subs r5, r0, r5 - 8000fe2: 0038 movs r0, r7 - 8000fe4: 3501 adds r5, #1 - 8000fe6: 40ea lsrs r2, r5 - 8000fe8: 1b5d subs r5, r3, r5 - 8000fea: 40a8 lsls r0, r5 - 8000fec: 1e43 subs r3, r0, #1 - 8000fee: 4198 sbcs r0, r3 - 8000ff0: 2500 movs r5, #0 - 8000ff2: 4310 orrs r0, r2 - 8000ff4: e728 b.n 8000e48 <__aeabi_fsub+0x74> - 8000ff6: 2320 movs r3, #32 - 8000ff8: 1a1b subs r3, r3, r0 - 8000ffa: 0032 movs r2, r6 - 8000ffc: 409e lsls r6, r3 - 8000ffe: 40c2 lsrs r2, r0 - 8001000: 0030 movs r0, r6 - 8001002: 1e43 subs r3, r0, #1 - 8001004: 4198 sbcs r0, r3 - 8001006: 4310 orrs r0, r2 - 8001008: e70c b.n 8000e24 <__aeabi_fsub+0x50> - 800100a: 2aff cmp r2, #255 ; 0xff - 800100c: d0db beq.n 8000fc6 <__aeabi_fsub+0x1f2> - 800100e: 2380 movs r3, #128 ; 0x80 - 8001010: 4660 mov r0, ip - 8001012: 04db lsls r3, r3, #19 - 8001014: 4318 orrs r0, r3 - 8001016: 4684 mov ip, r0 - 8001018: 2f1b cmp r7, #27 - 800101a: dd56 ble.n 80010ca <__aeabi_fsub+0x2f6> - 800101c: 2001 movs r0, #1 - 800101e: 000c movs r4, r1 - 8001020: 0015 movs r5, r2 - 8001022: 1a30 subs r0, r6, r0 - 8001024: e700 b.n 8000e28 <__aeabi_fsub+0x54> - 8001026: 4663 mov r3, ip - 8001028: 1b9f subs r7, r3, r6 - 800102a: 017b lsls r3, r7, #5 - 800102c: d43d bmi.n 80010aa <__aeabi_fsub+0x2d6> - 800102e: 2f00 cmp r7, #0 - 8001030: d000 beq.n 8001034 <__aeabi_fsub+0x260> - 8001032: e6fe b.n 8000e32 <__aeabi_fsub+0x5e> - 8001034: 2400 movs r4, #0 - 8001036: 2200 movs r2, #0 - 8001038: 2700 movs r7, #0 - 800103a: e716 b.n 8000e6a <__aeabi_fsub+0x96> - 800103c: 0005 movs r5, r0 - 800103e: e7af b.n 8000fa0 <__aeabi_fsub+0x1cc> - 8001040: 0032 movs r2, r6 - 8001042: 4643 mov r3, r8 - 8001044: 4641 mov r1, r8 - 8001046: 40da lsrs r2, r3 - 8001048: 2320 movs r3, #32 - 800104a: 1a5b subs r3, r3, r1 - 800104c: 409e lsls r6, r3 - 800104e: 0030 movs r0, r6 - 8001050: 1e43 subs r3, r0, #1 - 8001052: 4198 sbcs r0, r3 - 8001054: 4310 orrs r0, r2 - 8001056: e721 b.n 8000e9c <__aeabi_fsub+0xc8> - 8001058: 2d00 cmp r5, #0 - 800105a: d1a7 bne.n 8000fac <__aeabi_fsub+0x1d8> - 800105c: 4663 mov r3, ip - 800105e: 2b00 cmp r3, #0 - 8001060: d059 beq.n 8001116 <__aeabi_fsub+0x342> - 8001062: 2200 movs r2, #0 - 8001064: 2e00 cmp r6, #0 - 8001066: d100 bne.n 800106a <__aeabi_fsub+0x296> - 8001068: e6ff b.n 8000e6a <__aeabi_fsub+0x96> - 800106a: 0030 movs r0, r6 - 800106c: 4460 add r0, ip - 800106e: 0143 lsls r3, r0, #5 - 8001070: d592 bpl.n 8000f98 <__aeabi_fsub+0x1c4> - 8001072: 4b2a ldr r3, [pc, #168] ; (800111c <__aeabi_fsub+0x348>) - 8001074: 3501 adds r5, #1 - 8001076: 4018 ands r0, r3 - 8001078: e78e b.n 8000f98 <__aeabi_fsub+0x1c4> - 800107a: 4663 mov r3, ip - 800107c: 2b00 cmp r3, #0 - 800107e: d047 beq.n 8001110 <__aeabi_fsub+0x33c> - 8001080: 1e4b subs r3, r1, #1 - 8001082: 2901 cmp r1, #1 - 8001084: d015 beq.n 80010b2 <__aeabi_fsub+0x2de> - 8001086: 29ff cmp r1, #255 ; 0xff - 8001088: d02b beq.n 80010e2 <__aeabi_fsub+0x30e> - 800108a: 0019 movs r1, r3 - 800108c: e74e b.n 8000f2c <__aeabi_fsub+0x158> - 800108e: 000c movs r4, r1 - 8001090: 464b mov r3, r9 - 8001092: 003d movs r5, r7 - 8001094: e784 b.n 8000fa0 <__aeabi_fsub+0x1cc> - 8001096: 4662 mov r2, ip - 8001098: 2a00 cmp r2, #0 - 800109a: d18b bne.n 8000fb4 <__aeabi_fsub+0x1e0> - 800109c: 2e00 cmp r6, #0 - 800109e: d192 bne.n 8000fc6 <__aeabi_fsub+0x1f2> - 80010a0: 2780 movs r7, #128 ; 0x80 - 80010a2: 2400 movs r4, #0 - 80010a4: 22ff movs r2, #255 ; 0xff - 80010a6: 03ff lsls r7, r7, #15 - 80010a8: e6df b.n 8000e6a <__aeabi_fsub+0x96> - 80010aa: 4663 mov r3, ip - 80010ac: 000c movs r4, r1 - 80010ae: 1af7 subs r7, r6, r3 - 80010b0: e6bf b.n 8000e32 <__aeabi_fsub+0x5e> - 80010b2: 0030 movs r0, r6 - 80010b4: 4460 add r0, ip - 80010b6: 2501 movs r5, #1 - 80010b8: 0143 lsls r3, r0, #5 - 80010ba: d400 bmi.n 80010be <__aeabi_fsub+0x2ea> - 80010bc: e76c b.n 8000f98 <__aeabi_fsub+0x1c4> - 80010be: 2502 movs r5, #2 - 80010c0: e6f2 b.n 8000ea8 <__aeabi_fsub+0xd4> - 80010c2: 4663 mov r3, ip - 80010c4: 2501 movs r5, #1 - 80010c6: 1b98 subs r0, r3, r6 - 80010c8: e6ae b.n 8000e28 <__aeabi_fsub+0x54> - 80010ca: 2320 movs r3, #32 - 80010cc: 4664 mov r4, ip - 80010ce: 4660 mov r0, ip - 80010d0: 40fc lsrs r4, r7 - 80010d2: 1bdf subs r7, r3, r7 - 80010d4: 40b8 lsls r0, r7 - 80010d6: 1e43 subs r3, r0, #1 - 80010d8: 4198 sbcs r0, r3 - 80010da: 4320 orrs r0, r4 - 80010dc: e79f b.n 800101e <__aeabi_fsub+0x24a> - 80010de: 0005 movs r5, r0 - 80010e0: e75e b.n 8000fa0 <__aeabi_fsub+0x1cc> - 80010e2: 464b mov r3, r9 - 80010e4: e771 b.n 8000fca <__aeabi_fsub+0x1f6> - 80010e6: 2320 movs r3, #32 - 80010e8: 4665 mov r5, ip - 80010ea: 4660 mov r0, ip - 80010ec: 40cd lsrs r5, r1 - 80010ee: 1a59 subs r1, r3, r1 - 80010f0: 4088 lsls r0, r1 - 80010f2: 1e43 subs r3, r0, #1 - 80010f4: 4198 sbcs r0, r3 - 80010f6: 4328 orrs r0, r5 - 80010f8: e71c b.n 8000f34 <__aeabi_fsub+0x160> - 80010fa: 4663 mov r3, ip - 80010fc: 000c movs r4, r1 - 80010fe: 2501 movs r5, #1 - 8001100: 1af0 subs r0, r6, r3 - 8001102: e691 b.n 8000e28 <__aeabi_fsub+0x54> - 8001104: 2e00 cmp r6, #0 - 8001106: d095 beq.n 8001034 <__aeabi_fsub+0x260> - 8001108: 000c movs r4, r1 - 800110a: 464f mov r7, r9 - 800110c: 2200 movs r2, #0 - 800110e: e6ac b.n 8000e6a <__aeabi_fsub+0x96> - 8001110: 464b mov r3, r9 - 8001112: 000d movs r5, r1 - 8001114: e744 b.n 8000fa0 <__aeabi_fsub+0x1cc> - 8001116: 464f mov r7, r9 - 8001118: 2200 movs r2, #0 - 800111a: e6a6 b.n 8000e6a <__aeabi_fsub+0x96> - 800111c: fbffffff .word 0xfbffffff - 8001120: 7dffffff .word 0x7dffffff - 8001124: 2800 cmp r0, #0 - 8001126: d000 beq.n 800112a <__aeabi_fsub+0x356> - 8001128: e736 b.n 8000f98 <__aeabi_fsub+0x1c4> - 800112a: 2400 movs r4, #0 - 800112c: 2700 movs r7, #0 - 800112e: e69c b.n 8000e6a <__aeabi_fsub+0x96> - -08001130 <__aeabi_f2iz>: - 8001130: 0241 lsls r1, r0, #9 - 8001132: 0042 lsls r2, r0, #1 - 8001134: 0fc3 lsrs r3, r0, #31 - 8001136: 0a49 lsrs r1, r1, #9 - 8001138: 2000 movs r0, #0 - 800113a: 0e12 lsrs r2, r2, #24 - 800113c: 2a7e cmp r2, #126 ; 0x7e - 800113e: dd03 ble.n 8001148 <__aeabi_f2iz+0x18> - 8001140: 2a9d cmp r2, #157 ; 0x9d - 8001142: dd02 ble.n 800114a <__aeabi_f2iz+0x1a> - 8001144: 4a09 ldr r2, [pc, #36] ; (800116c <__aeabi_f2iz+0x3c>) - 8001146: 1898 adds r0, r3, r2 - 8001148: 4770 bx lr - 800114a: 2080 movs r0, #128 ; 0x80 - 800114c: 0400 lsls r0, r0, #16 - 800114e: 4301 orrs r1, r0 - 8001150: 2a95 cmp r2, #149 ; 0x95 - 8001152: dc07 bgt.n 8001164 <__aeabi_f2iz+0x34> - 8001154: 2096 movs r0, #150 ; 0x96 - 8001156: 1a82 subs r2, r0, r2 - 8001158: 40d1 lsrs r1, r2 - 800115a: 4248 negs r0, r1 - 800115c: 2b00 cmp r3, #0 - 800115e: d1f3 bne.n 8001148 <__aeabi_f2iz+0x18> - 8001160: 0008 movs r0, r1 - 8001162: e7f1 b.n 8001148 <__aeabi_f2iz+0x18> - 8001164: 3a96 subs r2, #150 ; 0x96 - 8001166: 4091 lsls r1, r2 - 8001168: e7f7 b.n 800115a <__aeabi_f2iz+0x2a> - 800116a: 46c0 nop ; (mov r8, r8) - 800116c: 7fffffff .word 0x7fffffff - -08001170 <__aeabi_i2f>: - 8001170: b5f8 push {r3, r4, r5, r6, r7, lr} - 8001172: 2800 cmp r0, #0 - 8001174: d013 beq.n 800119e <__aeabi_i2f+0x2e> - 8001176: 17c3 asrs r3, r0, #31 - 8001178: 18c6 adds r6, r0, r3 - 800117a: 405e eors r6, r3 - 800117c: 0fc4 lsrs r4, r0, #31 - 800117e: 0030 movs r0, r6 - 8001180: f000 fbaa bl 80018d8 <__clzsi2> - 8001184: 239e movs r3, #158 ; 0x9e - 8001186: 0005 movs r5, r0 - 8001188: 1a1b subs r3, r3, r0 - 800118a: 2b96 cmp r3, #150 ; 0x96 - 800118c: dc0f bgt.n 80011ae <__aeabi_i2f+0x3e> - 800118e: 2808 cmp r0, #8 - 8001190: dd01 ble.n 8001196 <__aeabi_i2f+0x26> - 8001192: 3d08 subs r5, #8 - 8001194: 40ae lsls r6, r5 - 8001196: 0276 lsls r6, r6, #9 - 8001198: 0a76 lsrs r6, r6, #9 - 800119a: b2d8 uxtb r0, r3 - 800119c: e002 b.n 80011a4 <__aeabi_i2f+0x34> - 800119e: 2400 movs r4, #0 - 80011a0: 2000 movs r0, #0 - 80011a2: 2600 movs r6, #0 - 80011a4: 05c0 lsls r0, r0, #23 - 80011a6: 4330 orrs r0, r6 - 80011a8: 07e4 lsls r4, r4, #31 - 80011aa: 4320 orrs r0, r4 - 80011ac: bdf8 pop {r3, r4, r5, r6, r7, pc} - 80011ae: 2b99 cmp r3, #153 ; 0x99 - 80011b0: dd0c ble.n 80011cc <__aeabi_i2f+0x5c> - 80011b2: 2205 movs r2, #5 - 80011b4: 0031 movs r1, r6 - 80011b6: 1a12 subs r2, r2, r0 - 80011b8: 40d1 lsrs r1, r2 - 80011ba: 000a movs r2, r1 - 80011bc: 0001 movs r1, r0 - 80011be: 0030 movs r0, r6 - 80011c0: 311b adds r1, #27 - 80011c2: 4088 lsls r0, r1 - 80011c4: 1e41 subs r1, r0, #1 - 80011c6: 4188 sbcs r0, r1 - 80011c8: 4302 orrs r2, r0 - 80011ca: 0016 movs r6, r2 - 80011cc: 2d05 cmp r5, #5 - 80011ce: dc12 bgt.n 80011f6 <__aeabi_i2f+0x86> - 80011d0: 0031 movs r1, r6 - 80011d2: 4f0d ldr r7, [pc, #52] ; (8001208 <__aeabi_i2f+0x98>) - 80011d4: 4039 ands r1, r7 - 80011d6: 0772 lsls r2, r6, #29 - 80011d8: d009 beq.n 80011ee <__aeabi_i2f+0x7e> - 80011da: 200f movs r0, #15 - 80011dc: 4030 ands r0, r6 - 80011de: 2804 cmp r0, #4 - 80011e0: d005 beq.n 80011ee <__aeabi_i2f+0x7e> - 80011e2: 3104 adds r1, #4 - 80011e4: 014a lsls r2, r1, #5 - 80011e6: d502 bpl.n 80011ee <__aeabi_i2f+0x7e> - 80011e8: 239f movs r3, #159 ; 0x9f - 80011ea: 4039 ands r1, r7 - 80011ec: 1b5b subs r3, r3, r5 - 80011ee: 0189 lsls r1, r1, #6 - 80011f0: 0a4e lsrs r6, r1, #9 - 80011f2: b2d8 uxtb r0, r3 - 80011f4: e7d6 b.n 80011a4 <__aeabi_i2f+0x34> - 80011f6: 1f6a subs r2, r5, #5 - 80011f8: 4096 lsls r6, r2 - 80011fa: 0031 movs r1, r6 - 80011fc: 4f02 ldr r7, [pc, #8] ; (8001208 <__aeabi_i2f+0x98>) - 80011fe: 4039 ands r1, r7 - 8001200: 0772 lsls r2, r6, #29 - 8001202: d0f4 beq.n 80011ee <__aeabi_i2f+0x7e> - 8001204: e7e9 b.n 80011da <__aeabi_i2f+0x6a> - 8001206: 46c0 nop ; (mov r8, r8) - 8001208: fbffffff .word 0xfbffffff - -0800120c <__aeabi_ui2f>: - 800120c: b570 push {r4, r5, r6, lr} - 800120e: 1e05 subs r5, r0, #0 - 8001210: d00e beq.n 8001230 <__aeabi_ui2f+0x24> - 8001212: f000 fb61 bl 80018d8 <__clzsi2> - 8001216: 239e movs r3, #158 ; 0x9e - 8001218: 0004 movs r4, r0 - 800121a: 1a1b subs r3, r3, r0 - 800121c: 2b96 cmp r3, #150 ; 0x96 - 800121e: dc0c bgt.n 800123a <__aeabi_ui2f+0x2e> - 8001220: 2808 cmp r0, #8 - 8001222: dd01 ble.n 8001228 <__aeabi_ui2f+0x1c> - 8001224: 3c08 subs r4, #8 - 8001226: 40a5 lsls r5, r4 - 8001228: 026d lsls r5, r5, #9 - 800122a: 0a6d lsrs r5, r5, #9 - 800122c: b2d8 uxtb r0, r3 - 800122e: e001 b.n 8001234 <__aeabi_ui2f+0x28> - 8001230: 2000 movs r0, #0 - 8001232: 2500 movs r5, #0 - 8001234: 05c0 lsls r0, r0, #23 - 8001236: 4328 orrs r0, r5 - 8001238: bd70 pop {r4, r5, r6, pc} - 800123a: 2b99 cmp r3, #153 ; 0x99 - 800123c: dd09 ble.n 8001252 <__aeabi_ui2f+0x46> - 800123e: 0002 movs r2, r0 - 8001240: 0029 movs r1, r5 - 8001242: 321b adds r2, #27 - 8001244: 4091 lsls r1, r2 - 8001246: 1e4a subs r2, r1, #1 - 8001248: 4191 sbcs r1, r2 - 800124a: 2205 movs r2, #5 - 800124c: 1a12 subs r2, r2, r0 - 800124e: 40d5 lsrs r5, r2 - 8001250: 430d orrs r5, r1 - 8001252: 2c05 cmp r4, #5 - 8001254: dc12 bgt.n 800127c <__aeabi_ui2f+0x70> - 8001256: 0029 movs r1, r5 - 8001258: 4e0c ldr r6, [pc, #48] ; (800128c <__aeabi_ui2f+0x80>) - 800125a: 4031 ands r1, r6 - 800125c: 076a lsls r2, r5, #29 - 800125e: d009 beq.n 8001274 <__aeabi_ui2f+0x68> - 8001260: 200f movs r0, #15 - 8001262: 4028 ands r0, r5 - 8001264: 2804 cmp r0, #4 - 8001266: d005 beq.n 8001274 <__aeabi_ui2f+0x68> - 8001268: 3104 adds r1, #4 - 800126a: 014a lsls r2, r1, #5 - 800126c: d502 bpl.n 8001274 <__aeabi_ui2f+0x68> - 800126e: 239f movs r3, #159 ; 0x9f - 8001270: 4031 ands r1, r6 - 8001272: 1b1b subs r3, r3, r4 - 8001274: 0189 lsls r1, r1, #6 - 8001276: 0a4d lsrs r5, r1, #9 - 8001278: b2d8 uxtb r0, r3 - 800127a: e7db b.n 8001234 <__aeabi_ui2f+0x28> - 800127c: 1f62 subs r2, r4, #5 - 800127e: 4095 lsls r5, r2 - 8001280: 0029 movs r1, r5 - 8001282: 4e02 ldr r6, [pc, #8] ; (800128c <__aeabi_ui2f+0x80>) - 8001284: 4031 ands r1, r6 - 8001286: 076a lsls r2, r5, #29 - 8001288: d0f4 beq.n 8001274 <__aeabi_ui2f+0x68> - 800128a: e7e9 b.n 8001260 <__aeabi_ui2f+0x54> - 800128c: fbffffff .word 0xfbffffff - -08001290 <__aeabi_dmul>: - 8001290: b5f0 push {r4, r5, r6, r7, lr} - 8001292: 4657 mov r7, sl - 8001294: 464e mov r6, r9 - 8001296: 4645 mov r5, r8 - 8001298: 46de mov lr, fp - 800129a: b5e0 push {r5, r6, r7, lr} - 800129c: 4698 mov r8, r3 - 800129e: 030c lsls r4, r1, #12 - 80012a0: 004b lsls r3, r1, #1 - 80012a2: 0006 movs r6, r0 - 80012a4: 4692 mov sl, r2 - 80012a6: b087 sub sp, #28 - 80012a8: 0b24 lsrs r4, r4, #12 - 80012aa: 0d5b lsrs r3, r3, #21 - 80012ac: 0fcf lsrs r7, r1, #31 - 80012ae: 2b00 cmp r3, #0 - 80012b0: d100 bne.n 80012b4 <__aeabi_dmul+0x24> - 80012b2: e15c b.n 800156e <__aeabi_dmul+0x2de> - 80012b4: 4ad9 ldr r2, [pc, #868] ; (800161c <__aeabi_dmul+0x38c>) - 80012b6: 4293 cmp r3, r2 - 80012b8: d100 bne.n 80012bc <__aeabi_dmul+0x2c> - 80012ba: e175 b.n 80015a8 <__aeabi_dmul+0x318> - 80012bc: 0f42 lsrs r2, r0, #29 - 80012be: 00e4 lsls r4, r4, #3 - 80012c0: 4314 orrs r4, r2 - 80012c2: 2280 movs r2, #128 ; 0x80 - 80012c4: 0412 lsls r2, r2, #16 - 80012c6: 4314 orrs r4, r2 - 80012c8: 4ad5 ldr r2, [pc, #852] ; (8001620 <__aeabi_dmul+0x390>) - 80012ca: 00c5 lsls r5, r0, #3 - 80012cc: 4694 mov ip, r2 - 80012ce: 4463 add r3, ip - 80012d0: 9300 str r3, [sp, #0] - 80012d2: 2300 movs r3, #0 - 80012d4: 4699 mov r9, r3 - 80012d6: 469b mov fp, r3 - 80012d8: 4643 mov r3, r8 - 80012da: 4642 mov r2, r8 - 80012dc: 031e lsls r6, r3, #12 - 80012de: 0fd2 lsrs r2, r2, #31 - 80012e0: 005b lsls r3, r3, #1 - 80012e2: 4650 mov r0, sl - 80012e4: 4690 mov r8, r2 - 80012e6: 0b36 lsrs r6, r6, #12 - 80012e8: 0d5b lsrs r3, r3, #21 - 80012ea: d100 bne.n 80012ee <__aeabi_dmul+0x5e> - 80012ec: e120 b.n 8001530 <__aeabi_dmul+0x2a0> - 80012ee: 4acb ldr r2, [pc, #812] ; (800161c <__aeabi_dmul+0x38c>) - 80012f0: 4293 cmp r3, r2 - 80012f2: d100 bne.n 80012f6 <__aeabi_dmul+0x66> - 80012f4: e162 b.n 80015bc <__aeabi_dmul+0x32c> - 80012f6: 49ca ldr r1, [pc, #808] ; (8001620 <__aeabi_dmul+0x390>) - 80012f8: 0f42 lsrs r2, r0, #29 - 80012fa: 468c mov ip, r1 - 80012fc: 9900 ldr r1, [sp, #0] - 80012fe: 4463 add r3, ip - 8001300: 00f6 lsls r6, r6, #3 - 8001302: 468c mov ip, r1 - 8001304: 4316 orrs r6, r2 - 8001306: 2280 movs r2, #128 ; 0x80 - 8001308: 449c add ip, r3 - 800130a: 0412 lsls r2, r2, #16 - 800130c: 4663 mov r3, ip - 800130e: 4316 orrs r6, r2 - 8001310: 00c2 lsls r2, r0, #3 - 8001312: 2000 movs r0, #0 - 8001314: 9300 str r3, [sp, #0] - 8001316: 9900 ldr r1, [sp, #0] - 8001318: 4643 mov r3, r8 - 800131a: 3101 adds r1, #1 - 800131c: 468c mov ip, r1 - 800131e: 4649 mov r1, r9 - 8001320: 407b eors r3, r7 - 8001322: 9301 str r3, [sp, #4] - 8001324: 290f cmp r1, #15 - 8001326: d826 bhi.n 8001376 <__aeabi_dmul+0xe6> - 8001328: 4bbe ldr r3, [pc, #760] ; (8001624 <__aeabi_dmul+0x394>) - 800132a: 0089 lsls r1, r1, #2 - 800132c: 5859 ldr r1, [r3, r1] - 800132e: 468f mov pc, r1 - 8001330: 4643 mov r3, r8 - 8001332: 9301 str r3, [sp, #4] - 8001334: 0034 movs r4, r6 - 8001336: 0015 movs r5, r2 - 8001338: 4683 mov fp, r0 - 800133a: 465b mov r3, fp - 800133c: 2b02 cmp r3, #2 - 800133e: d016 beq.n 800136e <__aeabi_dmul+0xde> - 8001340: 2b03 cmp r3, #3 - 8001342: d100 bne.n 8001346 <__aeabi_dmul+0xb6> - 8001344: e203 b.n 800174e <__aeabi_dmul+0x4be> - 8001346: 2b01 cmp r3, #1 - 8001348: d000 beq.n 800134c <__aeabi_dmul+0xbc> - 800134a: e0cd b.n 80014e8 <__aeabi_dmul+0x258> - 800134c: 2200 movs r2, #0 - 800134e: 2400 movs r4, #0 - 8001350: 2500 movs r5, #0 - 8001352: 9b01 ldr r3, [sp, #4] - 8001354: 0512 lsls r2, r2, #20 - 8001356: 4322 orrs r2, r4 - 8001358: 07db lsls r3, r3, #31 - 800135a: 431a orrs r2, r3 - 800135c: 0028 movs r0, r5 - 800135e: 0011 movs r1, r2 - 8001360: b007 add sp, #28 - 8001362: bcf0 pop {r4, r5, r6, r7} - 8001364: 46bb mov fp, r7 - 8001366: 46b2 mov sl, r6 - 8001368: 46a9 mov r9, r5 - 800136a: 46a0 mov r8, r4 - 800136c: bdf0 pop {r4, r5, r6, r7, pc} - 800136e: 2400 movs r4, #0 - 8001370: 2500 movs r5, #0 - 8001372: 4aaa ldr r2, [pc, #680] ; (800161c <__aeabi_dmul+0x38c>) - 8001374: e7ed b.n 8001352 <__aeabi_dmul+0xc2> - 8001376: 0c28 lsrs r0, r5, #16 - 8001378: 042d lsls r5, r5, #16 - 800137a: 0c2d lsrs r5, r5, #16 - 800137c: 002b movs r3, r5 - 800137e: 0c11 lsrs r1, r2, #16 - 8001380: 0412 lsls r2, r2, #16 - 8001382: 0c12 lsrs r2, r2, #16 - 8001384: 4353 muls r3, r2 - 8001386: 4698 mov r8, r3 - 8001388: 0013 movs r3, r2 - 800138a: 002f movs r7, r5 - 800138c: 4343 muls r3, r0 - 800138e: 4699 mov r9, r3 - 8001390: 434f muls r7, r1 - 8001392: 444f add r7, r9 - 8001394: 46bb mov fp, r7 - 8001396: 4647 mov r7, r8 - 8001398: 000b movs r3, r1 - 800139a: 0c3f lsrs r7, r7, #16 - 800139c: 46ba mov sl, r7 - 800139e: 4343 muls r3, r0 - 80013a0: 44da add sl, fp - 80013a2: 9302 str r3, [sp, #8] - 80013a4: 45d1 cmp r9, sl - 80013a6: d904 bls.n 80013b2 <__aeabi_dmul+0x122> - 80013a8: 2780 movs r7, #128 ; 0x80 - 80013aa: 027f lsls r7, r7, #9 - 80013ac: 46b9 mov r9, r7 - 80013ae: 444b add r3, r9 - 80013b0: 9302 str r3, [sp, #8] - 80013b2: 4653 mov r3, sl - 80013b4: 0c1b lsrs r3, r3, #16 - 80013b6: 469b mov fp, r3 - 80013b8: 4653 mov r3, sl - 80013ba: 041f lsls r7, r3, #16 - 80013bc: 4643 mov r3, r8 - 80013be: 041b lsls r3, r3, #16 - 80013c0: 0c1b lsrs r3, r3, #16 - 80013c2: 4698 mov r8, r3 - 80013c4: 003b movs r3, r7 - 80013c6: 4443 add r3, r8 - 80013c8: 9304 str r3, [sp, #16] - 80013ca: 0c33 lsrs r3, r6, #16 - 80013cc: 0436 lsls r6, r6, #16 - 80013ce: 0c36 lsrs r6, r6, #16 - 80013d0: 4698 mov r8, r3 - 80013d2: 0033 movs r3, r6 - 80013d4: 4343 muls r3, r0 - 80013d6: 4699 mov r9, r3 - 80013d8: 4643 mov r3, r8 - 80013da: 4343 muls r3, r0 - 80013dc: 002f movs r7, r5 - 80013de: 469a mov sl, r3 - 80013e0: 4643 mov r3, r8 - 80013e2: 4377 muls r7, r6 - 80013e4: 435d muls r5, r3 - 80013e6: 0c38 lsrs r0, r7, #16 - 80013e8: 444d add r5, r9 - 80013ea: 1945 adds r5, r0, r5 - 80013ec: 45a9 cmp r9, r5 - 80013ee: d903 bls.n 80013f8 <__aeabi_dmul+0x168> - 80013f0: 2380 movs r3, #128 ; 0x80 - 80013f2: 025b lsls r3, r3, #9 - 80013f4: 4699 mov r9, r3 - 80013f6: 44ca add sl, r9 - 80013f8: 043f lsls r7, r7, #16 - 80013fa: 0c28 lsrs r0, r5, #16 - 80013fc: 0c3f lsrs r7, r7, #16 - 80013fe: 042d lsls r5, r5, #16 - 8001400: 19ed adds r5, r5, r7 - 8001402: 0c27 lsrs r7, r4, #16 - 8001404: 0424 lsls r4, r4, #16 - 8001406: 0c24 lsrs r4, r4, #16 - 8001408: 0003 movs r3, r0 - 800140a: 0020 movs r0, r4 - 800140c: 4350 muls r0, r2 - 800140e: 437a muls r2, r7 - 8001410: 4691 mov r9, r2 - 8001412: 003a movs r2, r7 - 8001414: 4453 add r3, sl - 8001416: 9305 str r3, [sp, #20] - 8001418: 0c03 lsrs r3, r0, #16 - 800141a: 469a mov sl, r3 - 800141c: 434a muls r2, r1 - 800141e: 4361 muls r1, r4 - 8001420: 4449 add r1, r9 - 8001422: 4451 add r1, sl - 8001424: 44ab add fp, r5 - 8001426: 4589 cmp r9, r1 - 8001428: d903 bls.n 8001432 <__aeabi_dmul+0x1a2> - 800142a: 2380 movs r3, #128 ; 0x80 - 800142c: 025b lsls r3, r3, #9 - 800142e: 4699 mov r9, r3 - 8001430: 444a add r2, r9 - 8001432: 0400 lsls r0, r0, #16 - 8001434: 0c0b lsrs r3, r1, #16 - 8001436: 0c00 lsrs r0, r0, #16 - 8001438: 0409 lsls r1, r1, #16 - 800143a: 1809 adds r1, r1, r0 - 800143c: 0020 movs r0, r4 - 800143e: 4699 mov r9, r3 - 8001440: 4643 mov r3, r8 - 8001442: 4370 muls r0, r6 - 8001444: 435c muls r4, r3 - 8001446: 437e muls r6, r7 - 8001448: 435f muls r7, r3 - 800144a: 0c03 lsrs r3, r0, #16 - 800144c: 4698 mov r8, r3 - 800144e: 19a4 adds r4, r4, r6 - 8001450: 4444 add r4, r8 - 8001452: 444a add r2, r9 - 8001454: 9703 str r7, [sp, #12] - 8001456: 42a6 cmp r6, r4 - 8001458: d904 bls.n 8001464 <__aeabi_dmul+0x1d4> - 800145a: 2380 movs r3, #128 ; 0x80 - 800145c: 025b lsls r3, r3, #9 - 800145e: 4698 mov r8, r3 - 8001460: 4447 add r7, r8 - 8001462: 9703 str r7, [sp, #12] - 8001464: 0423 lsls r3, r4, #16 - 8001466: 9e02 ldr r6, [sp, #8] - 8001468: 469a mov sl, r3 - 800146a: 9b05 ldr r3, [sp, #20] - 800146c: 445e add r6, fp - 800146e: 4698 mov r8, r3 - 8001470: 42ae cmp r6, r5 - 8001472: 41ad sbcs r5, r5 - 8001474: 1876 adds r6, r6, r1 - 8001476: 428e cmp r6, r1 - 8001478: 4189 sbcs r1, r1 - 800147a: 0400 lsls r0, r0, #16 - 800147c: 0c00 lsrs r0, r0, #16 - 800147e: 4450 add r0, sl - 8001480: 4440 add r0, r8 - 8001482: 426d negs r5, r5 - 8001484: 1947 adds r7, r0, r5 - 8001486: 46b8 mov r8, r7 - 8001488: 4693 mov fp, r2 - 800148a: 4249 negs r1, r1 - 800148c: 4689 mov r9, r1 - 800148e: 44c3 add fp, r8 - 8001490: 44d9 add r9, fp - 8001492: 4298 cmp r0, r3 - 8001494: 4180 sbcs r0, r0 - 8001496: 45a8 cmp r8, r5 - 8001498: 41ad sbcs r5, r5 - 800149a: 4593 cmp fp, r2 - 800149c: 4192 sbcs r2, r2 - 800149e: 4589 cmp r9, r1 - 80014a0: 4189 sbcs r1, r1 - 80014a2: 426d negs r5, r5 - 80014a4: 4240 negs r0, r0 - 80014a6: 4328 orrs r0, r5 - 80014a8: 0c24 lsrs r4, r4, #16 - 80014aa: 4252 negs r2, r2 - 80014ac: 4249 negs r1, r1 - 80014ae: 430a orrs r2, r1 - 80014b0: 9b03 ldr r3, [sp, #12] - 80014b2: 1900 adds r0, r0, r4 - 80014b4: 1880 adds r0, r0, r2 - 80014b6: 18c7 adds r7, r0, r3 - 80014b8: 464b mov r3, r9 - 80014ba: 0ddc lsrs r4, r3, #23 - 80014bc: 9b04 ldr r3, [sp, #16] - 80014be: 0275 lsls r5, r6, #9 - 80014c0: 431d orrs r5, r3 - 80014c2: 1e6a subs r2, r5, #1 - 80014c4: 4195 sbcs r5, r2 - 80014c6: 464b mov r3, r9 - 80014c8: 0df6 lsrs r6, r6, #23 - 80014ca: 027f lsls r7, r7, #9 - 80014cc: 4335 orrs r5, r6 - 80014ce: 025a lsls r2, r3, #9 - 80014d0: 433c orrs r4, r7 - 80014d2: 4315 orrs r5, r2 - 80014d4: 01fb lsls r3, r7, #7 - 80014d6: d400 bmi.n 80014da <__aeabi_dmul+0x24a> - 80014d8: e11c b.n 8001714 <__aeabi_dmul+0x484> - 80014da: 2101 movs r1, #1 - 80014dc: 086a lsrs r2, r5, #1 - 80014de: 400d ands r5, r1 - 80014e0: 4315 orrs r5, r2 - 80014e2: 07e2 lsls r2, r4, #31 - 80014e4: 4315 orrs r5, r2 - 80014e6: 0864 lsrs r4, r4, #1 - 80014e8: 494f ldr r1, [pc, #316] ; (8001628 <__aeabi_dmul+0x398>) - 80014ea: 4461 add r1, ip - 80014ec: 2900 cmp r1, #0 - 80014ee: dc00 bgt.n 80014f2 <__aeabi_dmul+0x262> - 80014f0: e0b0 b.n 8001654 <__aeabi_dmul+0x3c4> - 80014f2: 076b lsls r3, r5, #29 - 80014f4: d009 beq.n 800150a <__aeabi_dmul+0x27a> - 80014f6: 220f movs r2, #15 - 80014f8: 402a ands r2, r5 - 80014fa: 2a04 cmp r2, #4 - 80014fc: d005 beq.n 800150a <__aeabi_dmul+0x27a> - 80014fe: 1d2a adds r2, r5, #4 - 8001500: 42aa cmp r2, r5 - 8001502: 41ad sbcs r5, r5 - 8001504: 426d negs r5, r5 - 8001506: 1964 adds r4, r4, r5 - 8001508: 0015 movs r5, r2 - 800150a: 01e3 lsls r3, r4, #7 - 800150c: d504 bpl.n 8001518 <__aeabi_dmul+0x288> - 800150e: 2180 movs r1, #128 ; 0x80 - 8001510: 4a46 ldr r2, [pc, #280] ; (800162c <__aeabi_dmul+0x39c>) - 8001512: 00c9 lsls r1, r1, #3 - 8001514: 4014 ands r4, r2 - 8001516: 4461 add r1, ip - 8001518: 4a45 ldr r2, [pc, #276] ; (8001630 <__aeabi_dmul+0x3a0>) - 800151a: 4291 cmp r1, r2 - 800151c: dd00 ble.n 8001520 <__aeabi_dmul+0x290> - 800151e: e726 b.n 800136e <__aeabi_dmul+0xde> - 8001520: 0762 lsls r2, r4, #29 - 8001522: 08ed lsrs r5, r5, #3 - 8001524: 0264 lsls r4, r4, #9 - 8001526: 0549 lsls r1, r1, #21 - 8001528: 4315 orrs r5, r2 - 800152a: 0b24 lsrs r4, r4, #12 - 800152c: 0d4a lsrs r2, r1, #21 - 800152e: e710 b.n 8001352 <__aeabi_dmul+0xc2> - 8001530: 4652 mov r2, sl - 8001532: 4332 orrs r2, r6 - 8001534: d100 bne.n 8001538 <__aeabi_dmul+0x2a8> - 8001536: e07f b.n 8001638 <__aeabi_dmul+0x3a8> - 8001538: 2e00 cmp r6, #0 - 800153a: d100 bne.n 800153e <__aeabi_dmul+0x2ae> - 800153c: e0dc b.n 80016f8 <__aeabi_dmul+0x468> - 800153e: 0030 movs r0, r6 - 8001540: f000 f9ca bl 80018d8 <__clzsi2> - 8001544: 0002 movs r2, r0 - 8001546: 3a0b subs r2, #11 - 8001548: 231d movs r3, #29 - 800154a: 0001 movs r1, r0 - 800154c: 1a9b subs r3, r3, r2 - 800154e: 4652 mov r2, sl - 8001550: 3908 subs r1, #8 - 8001552: 40da lsrs r2, r3 - 8001554: 408e lsls r6, r1 - 8001556: 4316 orrs r6, r2 - 8001558: 4652 mov r2, sl - 800155a: 408a lsls r2, r1 - 800155c: 9b00 ldr r3, [sp, #0] - 800155e: 4935 ldr r1, [pc, #212] ; (8001634 <__aeabi_dmul+0x3a4>) - 8001560: 1a18 subs r0, r3, r0 - 8001562: 0003 movs r3, r0 - 8001564: 468c mov ip, r1 - 8001566: 4463 add r3, ip - 8001568: 2000 movs r0, #0 - 800156a: 9300 str r3, [sp, #0] - 800156c: e6d3 b.n 8001316 <__aeabi_dmul+0x86> - 800156e: 0025 movs r5, r4 - 8001570: 4305 orrs r5, r0 - 8001572: d04a beq.n 800160a <__aeabi_dmul+0x37a> - 8001574: 2c00 cmp r4, #0 - 8001576: d100 bne.n 800157a <__aeabi_dmul+0x2ea> - 8001578: e0b0 b.n 80016dc <__aeabi_dmul+0x44c> - 800157a: 0020 movs r0, r4 - 800157c: f000 f9ac bl 80018d8 <__clzsi2> - 8001580: 0001 movs r1, r0 - 8001582: 0002 movs r2, r0 - 8001584: 390b subs r1, #11 - 8001586: 231d movs r3, #29 - 8001588: 0010 movs r0, r2 - 800158a: 1a5b subs r3, r3, r1 - 800158c: 0031 movs r1, r6 - 800158e: 0035 movs r5, r6 - 8001590: 3808 subs r0, #8 - 8001592: 4084 lsls r4, r0 - 8001594: 40d9 lsrs r1, r3 - 8001596: 4085 lsls r5, r0 - 8001598: 430c orrs r4, r1 - 800159a: 4826 ldr r0, [pc, #152] ; (8001634 <__aeabi_dmul+0x3a4>) - 800159c: 1a83 subs r3, r0, r2 - 800159e: 9300 str r3, [sp, #0] - 80015a0: 2300 movs r3, #0 - 80015a2: 4699 mov r9, r3 - 80015a4: 469b mov fp, r3 - 80015a6: e697 b.n 80012d8 <__aeabi_dmul+0x48> - 80015a8: 0005 movs r5, r0 - 80015aa: 4325 orrs r5, r4 - 80015ac: d126 bne.n 80015fc <__aeabi_dmul+0x36c> - 80015ae: 2208 movs r2, #8 - 80015b0: 9300 str r3, [sp, #0] - 80015b2: 2302 movs r3, #2 - 80015b4: 2400 movs r4, #0 - 80015b6: 4691 mov r9, r2 - 80015b8: 469b mov fp, r3 - 80015ba: e68d b.n 80012d8 <__aeabi_dmul+0x48> - 80015bc: 4652 mov r2, sl - 80015be: 9b00 ldr r3, [sp, #0] - 80015c0: 4332 orrs r2, r6 - 80015c2: d110 bne.n 80015e6 <__aeabi_dmul+0x356> - 80015c4: 4915 ldr r1, [pc, #84] ; (800161c <__aeabi_dmul+0x38c>) - 80015c6: 2600 movs r6, #0 - 80015c8: 468c mov ip, r1 - 80015ca: 4463 add r3, ip - 80015cc: 4649 mov r1, r9 - 80015ce: 9300 str r3, [sp, #0] - 80015d0: 2302 movs r3, #2 - 80015d2: 4319 orrs r1, r3 - 80015d4: 4689 mov r9, r1 - 80015d6: 2002 movs r0, #2 - 80015d8: e69d b.n 8001316 <__aeabi_dmul+0x86> - 80015da: 465b mov r3, fp - 80015dc: 9701 str r7, [sp, #4] - 80015de: 2b02 cmp r3, #2 - 80015e0: d000 beq.n 80015e4 <__aeabi_dmul+0x354> - 80015e2: e6ad b.n 8001340 <__aeabi_dmul+0xb0> - 80015e4: e6c3 b.n 800136e <__aeabi_dmul+0xde> - 80015e6: 4a0d ldr r2, [pc, #52] ; (800161c <__aeabi_dmul+0x38c>) - 80015e8: 2003 movs r0, #3 - 80015ea: 4694 mov ip, r2 - 80015ec: 4463 add r3, ip - 80015ee: 464a mov r2, r9 - 80015f0: 9300 str r3, [sp, #0] - 80015f2: 2303 movs r3, #3 - 80015f4: 431a orrs r2, r3 - 80015f6: 4691 mov r9, r2 - 80015f8: 4652 mov r2, sl - 80015fa: e68c b.n 8001316 <__aeabi_dmul+0x86> - 80015fc: 220c movs r2, #12 - 80015fe: 9300 str r3, [sp, #0] - 8001600: 2303 movs r3, #3 - 8001602: 0005 movs r5, r0 - 8001604: 4691 mov r9, r2 - 8001606: 469b mov fp, r3 - 8001608: e666 b.n 80012d8 <__aeabi_dmul+0x48> - 800160a: 2304 movs r3, #4 - 800160c: 4699 mov r9, r3 - 800160e: 2300 movs r3, #0 - 8001610: 9300 str r3, [sp, #0] - 8001612: 3301 adds r3, #1 - 8001614: 2400 movs r4, #0 - 8001616: 469b mov fp, r3 - 8001618: e65e b.n 80012d8 <__aeabi_dmul+0x48> - 800161a: 46c0 nop ; (mov r8, r8) - 800161c: 000007ff .word 0x000007ff - 8001620: fffffc01 .word 0xfffffc01 - 8001624: 0800f86c .word 0x0800f86c - 8001628: 000003ff .word 0x000003ff - 800162c: feffffff .word 0xfeffffff - 8001630: 000007fe .word 0x000007fe - 8001634: fffffc0d .word 0xfffffc0d - 8001638: 4649 mov r1, r9 - 800163a: 2301 movs r3, #1 - 800163c: 4319 orrs r1, r3 - 800163e: 4689 mov r9, r1 - 8001640: 2600 movs r6, #0 - 8001642: 2001 movs r0, #1 - 8001644: e667 b.n 8001316 <__aeabi_dmul+0x86> - 8001646: 2300 movs r3, #0 - 8001648: 2480 movs r4, #128 ; 0x80 - 800164a: 2500 movs r5, #0 - 800164c: 4a43 ldr r2, [pc, #268] ; (800175c <__aeabi_dmul+0x4cc>) - 800164e: 9301 str r3, [sp, #4] - 8001650: 0324 lsls r4, r4, #12 - 8001652: e67e b.n 8001352 <__aeabi_dmul+0xc2> - 8001654: 2001 movs r0, #1 - 8001656: 1a40 subs r0, r0, r1 - 8001658: 2838 cmp r0, #56 ; 0x38 - 800165a: dd00 ble.n 800165e <__aeabi_dmul+0x3ce> - 800165c: e676 b.n 800134c <__aeabi_dmul+0xbc> - 800165e: 281f cmp r0, #31 - 8001660: dd5b ble.n 800171a <__aeabi_dmul+0x48a> - 8001662: 221f movs r2, #31 - 8001664: 0023 movs r3, r4 - 8001666: 4252 negs r2, r2 - 8001668: 1a51 subs r1, r2, r1 - 800166a: 40cb lsrs r3, r1 - 800166c: 0019 movs r1, r3 - 800166e: 2820 cmp r0, #32 - 8001670: d003 beq.n 800167a <__aeabi_dmul+0x3ea> - 8001672: 4a3b ldr r2, [pc, #236] ; (8001760 <__aeabi_dmul+0x4d0>) - 8001674: 4462 add r2, ip - 8001676: 4094 lsls r4, r2 - 8001678: 4325 orrs r5, r4 - 800167a: 1e6a subs r2, r5, #1 - 800167c: 4195 sbcs r5, r2 - 800167e: 002a movs r2, r5 - 8001680: 430a orrs r2, r1 - 8001682: 2107 movs r1, #7 - 8001684: 000d movs r5, r1 - 8001686: 2400 movs r4, #0 - 8001688: 4015 ands r5, r2 - 800168a: 4211 tst r1, r2 - 800168c: d05b beq.n 8001746 <__aeabi_dmul+0x4b6> - 800168e: 210f movs r1, #15 - 8001690: 2400 movs r4, #0 - 8001692: 4011 ands r1, r2 - 8001694: 2904 cmp r1, #4 - 8001696: d053 beq.n 8001740 <__aeabi_dmul+0x4b0> - 8001698: 1d11 adds r1, r2, #4 - 800169a: 4291 cmp r1, r2 - 800169c: 4192 sbcs r2, r2 - 800169e: 4252 negs r2, r2 - 80016a0: 18a4 adds r4, r4, r2 - 80016a2: 000a movs r2, r1 - 80016a4: 0223 lsls r3, r4, #8 - 80016a6: d54b bpl.n 8001740 <__aeabi_dmul+0x4b0> - 80016a8: 2201 movs r2, #1 - 80016aa: 2400 movs r4, #0 - 80016ac: 2500 movs r5, #0 - 80016ae: e650 b.n 8001352 <__aeabi_dmul+0xc2> - 80016b0: 2380 movs r3, #128 ; 0x80 - 80016b2: 031b lsls r3, r3, #12 - 80016b4: 421c tst r4, r3 - 80016b6: d009 beq.n 80016cc <__aeabi_dmul+0x43c> - 80016b8: 421e tst r6, r3 - 80016ba: d107 bne.n 80016cc <__aeabi_dmul+0x43c> - 80016bc: 4333 orrs r3, r6 - 80016be: 031c lsls r4, r3, #12 - 80016c0: 4643 mov r3, r8 - 80016c2: 0015 movs r5, r2 - 80016c4: 0b24 lsrs r4, r4, #12 - 80016c6: 4a25 ldr r2, [pc, #148] ; (800175c <__aeabi_dmul+0x4cc>) - 80016c8: 9301 str r3, [sp, #4] - 80016ca: e642 b.n 8001352 <__aeabi_dmul+0xc2> - 80016cc: 2280 movs r2, #128 ; 0x80 - 80016ce: 0312 lsls r2, r2, #12 - 80016d0: 4314 orrs r4, r2 - 80016d2: 0324 lsls r4, r4, #12 - 80016d4: 4a21 ldr r2, [pc, #132] ; (800175c <__aeabi_dmul+0x4cc>) - 80016d6: 0b24 lsrs r4, r4, #12 - 80016d8: 9701 str r7, [sp, #4] - 80016da: e63a b.n 8001352 <__aeabi_dmul+0xc2> - 80016dc: f000 f8fc bl 80018d8 <__clzsi2> - 80016e0: 0001 movs r1, r0 - 80016e2: 0002 movs r2, r0 - 80016e4: 3115 adds r1, #21 - 80016e6: 3220 adds r2, #32 - 80016e8: 291c cmp r1, #28 - 80016ea: dc00 bgt.n 80016ee <__aeabi_dmul+0x45e> - 80016ec: e74b b.n 8001586 <__aeabi_dmul+0x2f6> - 80016ee: 0034 movs r4, r6 - 80016f0: 3808 subs r0, #8 - 80016f2: 2500 movs r5, #0 - 80016f4: 4084 lsls r4, r0 - 80016f6: e750 b.n 800159a <__aeabi_dmul+0x30a> - 80016f8: f000 f8ee bl 80018d8 <__clzsi2> - 80016fc: 0003 movs r3, r0 - 80016fe: 001a movs r2, r3 - 8001700: 3215 adds r2, #21 - 8001702: 3020 adds r0, #32 - 8001704: 2a1c cmp r2, #28 - 8001706: dc00 bgt.n 800170a <__aeabi_dmul+0x47a> - 8001708: e71e b.n 8001548 <__aeabi_dmul+0x2b8> - 800170a: 4656 mov r6, sl - 800170c: 3b08 subs r3, #8 - 800170e: 2200 movs r2, #0 - 8001710: 409e lsls r6, r3 - 8001712: e723 b.n 800155c <__aeabi_dmul+0x2cc> - 8001714: 9b00 ldr r3, [sp, #0] - 8001716: 469c mov ip, r3 - 8001718: e6e6 b.n 80014e8 <__aeabi_dmul+0x258> - 800171a: 4912 ldr r1, [pc, #72] ; (8001764 <__aeabi_dmul+0x4d4>) - 800171c: 0022 movs r2, r4 - 800171e: 4461 add r1, ip - 8001720: 002e movs r6, r5 - 8001722: 408d lsls r5, r1 - 8001724: 408a lsls r2, r1 - 8001726: 40c6 lsrs r6, r0 - 8001728: 1e69 subs r1, r5, #1 - 800172a: 418d sbcs r5, r1 - 800172c: 4332 orrs r2, r6 - 800172e: 432a orrs r2, r5 - 8001730: 40c4 lsrs r4, r0 - 8001732: 0753 lsls r3, r2, #29 - 8001734: d0b6 beq.n 80016a4 <__aeabi_dmul+0x414> - 8001736: 210f movs r1, #15 - 8001738: 4011 ands r1, r2 - 800173a: 2904 cmp r1, #4 - 800173c: d1ac bne.n 8001698 <__aeabi_dmul+0x408> - 800173e: e7b1 b.n 80016a4 <__aeabi_dmul+0x414> - 8001740: 0765 lsls r5, r4, #29 - 8001742: 0264 lsls r4, r4, #9 - 8001744: 0b24 lsrs r4, r4, #12 - 8001746: 08d2 lsrs r2, r2, #3 - 8001748: 4315 orrs r5, r2 - 800174a: 2200 movs r2, #0 - 800174c: e601 b.n 8001352 <__aeabi_dmul+0xc2> - 800174e: 2280 movs r2, #128 ; 0x80 - 8001750: 0312 lsls r2, r2, #12 - 8001752: 4314 orrs r4, r2 - 8001754: 0324 lsls r4, r4, #12 - 8001756: 4a01 ldr r2, [pc, #4] ; (800175c <__aeabi_dmul+0x4cc>) - 8001758: 0b24 lsrs r4, r4, #12 - 800175a: e5fa b.n 8001352 <__aeabi_dmul+0xc2> - 800175c: 000007ff .word 0x000007ff - 8001760: 0000043e .word 0x0000043e - 8001764: 0000041e .word 0x0000041e - -08001768 <__aeabi_i2d>: - 8001768: b570 push {r4, r5, r6, lr} - 800176a: 2800 cmp r0, #0 - 800176c: d016 beq.n 800179c <__aeabi_i2d+0x34> - 800176e: 17c3 asrs r3, r0, #31 - 8001770: 18c5 adds r5, r0, r3 - 8001772: 405d eors r5, r3 - 8001774: 0fc4 lsrs r4, r0, #31 - 8001776: 0028 movs r0, r5 - 8001778: f000 f8ae bl 80018d8 <__clzsi2> - 800177c: 4a11 ldr r2, [pc, #68] ; (80017c4 <__aeabi_i2d+0x5c>) - 800177e: 1a12 subs r2, r2, r0 - 8001780: 280a cmp r0, #10 - 8001782: dc16 bgt.n 80017b2 <__aeabi_i2d+0x4a> - 8001784: 0003 movs r3, r0 - 8001786: 002e movs r6, r5 - 8001788: 3315 adds r3, #21 - 800178a: 409e lsls r6, r3 - 800178c: 230b movs r3, #11 - 800178e: 1a18 subs r0, r3, r0 - 8001790: 40c5 lsrs r5, r0 - 8001792: 0552 lsls r2, r2, #21 - 8001794: 032d lsls r5, r5, #12 - 8001796: 0b2d lsrs r5, r5, #12 - 8001798: 0d53 lsrs r3, r2, #21 - 800179a: e003 b.n 80017a4 <__aeabi_i2d+0x3c> - 800179c: 2400 movs r4, #0 - 800179e: 2300 movs r3, #0 - 80017a0: 2500 movs r5, #0 - 80017a2: 2600 movs r6, #0 - 80017a4: 051b lsls r3, r3, #20 - 80017a6: 432b orrs r3, r5 - 80017a8: 07e4 lsls r4, r4, #31 - 80017aa: 4323 orrs r3, r4 - 80017ac: 0030 movs r0, r6 - 80017ae: 0019 movs r1, r3 - 80017b0: bd70 pop {r4, r5, r6, pc} - 80017b2: 380b subs r0, #11 - 80017b4: 4085 lsls r5, r0 - 80017b6: 0552 lsls r2, r2, #21 - 80017b8: 032d lsls r5, r5, #12 - 80017ba: 2600 movs r6, #0 - 80017bc: 0b2d lsrs r5, r5, #12 - 80017be: 0d53 lsrs r3, r2, #21 - 80017c0: e7f0 b.n 80017a4 <__aeabi_i2d+0x3c> - 80017c2: 46c0 nop ; (mov r8, r8) - 80017c4: 0000041e .word 0x0000041e - -080017c8 <__aeabi_d2f>: - 80017c8: 0002 movs r2, r0 - 80017ca: 004b lsls r3, r1, #1 - 80017cc: b5f0 push {r4, r5, r6, r7, lr} - 80017ce: 0d5b lsrs r3, r3, #21 - 80017d0: 030c lsls r4, r1, #12 - 80017d2: 4e3d ldr r6, [pc, #244] ; (80018c8 <__aeabi_d2f+0x100>) - 80017d4: 0a64 lsrs r4, r4, #9 - 80017d6: 0f40 lsrs r0, r0, #29 - 80017d8: 1c5f adds r7, r3, #1 - 80017da: 0fc9 lsrs r1, r1, #31 - 80017dc: 4304 orrs r4, r0 - 80017de: 00d5 lsls r5, r2, #3 - 80017e0: 4237 tst r7, r6 - 80017e2: d00a beq.n 80017fa <__aeabi_d2f+0x32> - 80017e4: 4839 ldr r0, [pc, #228] ; (80018cc <__aeabi_d2f+0x104>) - 80017e6: 181e adds r6, r3, r0 - 80017e8: 2efe cmp r6, #254 ; 0xfe - 80017ea: dd16 ble.n 800181a <__aeabi_d2f+0x52> - 80017ec: 20ff movs r0, #255 ; 0xff - 80017ee: 2400 movs r4, #0 - 80017f0: 05c0 lsls r0, r0, #23 - 80017f2: 4320 orrs r0, r4 - 80017f4: 07c9 lsls r1, r1, #31 - 80017f6: 4308 orrs r0, r1 - 80017f8: bdf0 pop {r4, r5, r6, r7, pc} - 80017fa: 2b00 cmp r3, #0 - 80017fc: d106 bne.n 800180c <__aeabi_d2f+0x44> - 80017fe: 432c orrs r4, r5 - 8001800: d026 beq.n 8001850 <__aeabi_d2f+0x88> - 8001802: 2205 movs r2, #5 - 8001804: 0192 lsls r2, r2, #6 - 8001806: 0a54 lsrs r4, r2, #9 - 8001808: b2d8 uxtb r0, r3 - 800180a: e7f1 b.n 80017f0 <__aeabi_d2f+0x28> - 800180c: 4325 orrs r5, r4 - 800180e: d0ed beq.n 80017ec <__aeabi_d2f+0x24> - 8001810: 2080 movs r0, #128 ; 0x80 - 8001812: 03c0 lsls r0, r0, #15 - 8001814: 4304 orrs r4, r0 - 8001816: 20ff movs r0, #255 ; 0xff - 8001818: e7ea b.n 80017f0 <__aeabi_d2f+0x28> - 800181a: 2e00 cmp r6, #0 - 800181c: dd1b ble.n 8001856 <__aeabi_d2f+0x8e> - 800181e: 0192 lsls r2, r2, #6 - 8001820: 1e53 subs r3, r2, #1 - 8001822: 419a sbcs r2, r3 - 8001824: 00e4 lsls r4, r4, #3 - 8001826: 0f6d lsrs r5, r5, #29 - 8001828: 4322 orrs r2, r4 - 800182a: 432a orrs r2, r5 - 800182c: 0753 lsls r3, r2, #29 - 800182e: d048 beq.n 80018c2 <__aeabi_d2f+0xfa> - 8001830: 230f movs r3, #15 - 8001832: 4013 ands r3, r2 - 8001834: 2b04 cmp r3, #4 - 8001836: d000 beq.n 800183a <__aeabi_d2f+0x72> - 8001838: 3204 adds r2, #4 - 800183a: 2380 movs r3, #128 ; 0x80 - 800183c: 04db lsls r3, r3, #19 - 800183e: 4013 ands r3, r2 - 8001840: d03f beq.n 80018c2 <__aeabi_d2f+0xfa> - 8001842: 1c70 adds r0, r6, #1 - 8001844: 2efe cmp r6, #254 ; 0xfe - 8001846: d0d1 beq.n 80017ec <__aeabi_d2f+0x24> - 8001848: 0192 lsls r2, r2, #6 - 800184a: 0a54 lsrs r4, r2, #9 - 800184c: b2c0 uxtb r0, r0 - 800184e: e7cf b.n 80017f0 <__aeabi_d2f+0x28> - 8001850: 2000 movs r0, #0 - 8001852: 2400 movs r4, #0 - 8001854: e7cc b.n 80017f0 <__aeabi_d2f+0x28> - 8001856: 0032 movs r2, r6 - 8001858: 3217 adds r2, #23 - 800185a: db22 blt.n 80018a2 <__aeabi_d2f+0xda> - 800185c: 2080 movs r0, #128 ; 0x80 - 800185e: 0400 lsls r0, r0, #16 - 8001860: 4320 orrs r0, r4 - 8001862: 241e movs r4, #30 - 8001864: 1ba4 subs r4, r4, r6 - 8001866: 2c1f cmp r4, #31 - 8001868: dd1d ble.n 80018a6 <__aeabi_d2f+0xde> - 800186a: 2202 movs r2, #2 - 800186c: 4252 negs r2, r2 - 800186e: 1b96 subs r6, r2, r6 - 8001870: 0002 movs r2, r0 - 8001872: 40f2 lsrs r2, r6 - 8001874: 0016 movs r6, r2 - 8001876: 2c20 cmp r4, #32 - 8001878: d004 beq.n 8001884 <__aeabi_d2f+0xbc> - 800187a: 4a15 ldr r2, [pc, #84] ; (80018d0 <__aeabi_d2f+0x108>) - 800187c: 4694 mov ip, r2 - 800187e: 4463 add r3, ip - 8001880: 4098 lsls r0, r3 - 8001882: 4305 orrs r5, r0 - 8001884: 002a movs r2, r5 - 8001886: 1e53 subs r3, r2, #1 - 8001888: 419a sbcs r2, r3 - 800188a: 4332 orrs r2, r6 - 800188c: 2600 movs r6, #0 - 800188e: 0753 lsls r3, r2, #29 - 8001890: d1ce bne.n 8001830 <__aeabi_d2f+0x68> - 8001892: 2480 movs r4, #128 ; 0x80 - 8001894: 0013 movs r3, r2 - 8001896: 04e4 lsls r4, r4, #19 - 8001898: 2001 movs r0, #1 - 800189a: 4023 ands r3, r4 - 800189c: 4222 tst r2, r4 - 800189e: d1d3 bne.n 8001848 <__aeabi_d2f+0x80> - 80018a0: e7b0 b.n 8001804 <__aeabi_d2f+0x3c> - 80018a2: 2300 movs r3, #0 - 80018a4: e7ad b.n 8001802 <__aeabi_d2f+0x3a> - 80018a6: 4a0b ldr r2, [pc, #44] ; (80018d4 <__aeabi_d2f+0x10c>) - 80018a8: 4694 mov ip, r2 - 80018aa: 002a movs r2, r5 - 80018ac: 40e2 lsrs r2, r4 - 80018ae: 0014 movs r4, r2 - 80018b0: 002a movs r2, r5 - 80018b2: 4463 add r3, ip - 80018b4: 409a lsls r2, r3 - 80018b6: 4098 lsls r0, r3 - 80018b8: 1e55 subs r5, r2, #1 - 80018ba: 41aa sbcs r2, r5 - 80018bc: 4302 orrs r2, r0 - 80018be: 4322 orrs r2, r4 - 80018c0: e7e4 b.n 800188c <__aeabi_d2f+0xc4> - 80018c2: 0033 movs r3, r6 - 80018c4: e79e b.n 8001804 <__aeabi_d2f+0x3c> - 80018c6: 46c0 nop ; (mov r8, r8) - 80018c8: 000007fe .word 0x000007fe - 80018cc: fffffc80 .word 0xfffffc80 - 80018d0: fffffca2 .word 0xfffffca2 - 80018d4: fffffc82 .word 0xfffffc82 - -080018d8 <__clzsi2>: - 80018d8: 211c movs r1, #28 - 80018da: 2301 movs r3, #1 - 80018dc: 041b lsls r3, r3, #16 - 80018de: 4298 cmp r0, r3 - 80018e0: d301 bcc.n 80018e6 <__clzsi2+0xe> - 80018e2: 0c00 lsrs r0, r0, #16 - 80018e4: 3910 subs r1, #16 - 80018e6: 0a1b lsrs r3, r3, #8 - 80018e8: 4298 cmp r0, r3 - 80018ea: d301 bcc.n 80018f0 <__clzsi2+0x18> - 80018ec: 0a00 lsrs r0, r0, #8 - 80018ee: 3908 subs r1, #8 - 80018f0: 091b lsrs r3, r3, #4 - 80018f2: 4298 cmp r0, r3 - 80018f4: d301 bcc.n 80018fa <__clzsi2+0x22> - 80018f6: 0900 lsrs r0, r0, #4 - 80018f8: 3904 subs r1, #4 - 80018fa: a202 add r2, pc, #8 ; (adr r2, 8001904 <__clzsi2+0x2c>) - 80018fc: 5c10 ldrb r0, [r2, r0] - 80018fe: 1840 adds r0, r0, r1 - 8001900: 4770 bx lr - 8001902: 46c0 nop ; (mov r8, r8) - 8001904: 02020304 .word 0x02020304 - 8001908: 01010101 .word 0x01010101 - ... - -08001914 : - -ADC_HandleTypeDef hadc1; - -/* ADC1 init function */ -void MX_ADC1_Init(void) -{ - 8001914: b580 push {r7, lr} - 8001916: b084 sub sp, #16 - 8001918: af00 add r7, sp, #0 - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - 800191a: 1d3b adds r3, r7, #4 - 800191c: 0018 movs r0, r3 - 800191e: 230c movs r3, #12 - 8001920: 001a movs r2, r3 - 8001922: 2100 movs r1, #0 - 8001924: f00d f973 bl 800ec0e - - /* USER CODE END ADC1_Init 1 */ - - /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) - */ - hadc1.Instance = ADC1; - 8001928: 4b2d ldr r3, [pc, #180] ; (80019e0 ) - 800192a: 4a2e ldr r2, [pc, #184] ; (80019e4 ) - 800192c: 601a str r2, [r3, #0] - hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV6; - 800192e: 4b2c ldr r3, [pc, #176] ; (80019e0 ) - 8001930: 22c0 movs r2, #192 ; 0xc0 - 8001932: 0312 lsls r2, r2, #12 - 8001934: 605a str r2, [r3, #4] - hadc1.Init.Resolution = ADC_RESOLUTION_10B; - 8001936: 4b2a ldr r3, [pc, #168] ; (80019e0 ) - 8001938: 2208 movs r2, #8 - 800193a: 609a str r2, [r3, #8] - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - 800193c: 4b28 ldr r3, [pc, #160] ; (80019e0 ) - 800193e: 2200 movs r2, #0 - 8001940: 60da str r2, [r3, #12] - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - 8001942: 4b27 ldr r3, [pc, #156] ; (80019e0 ) - 8001944: 2200 movs r2, #0 - 8001946: 611a str r2, [r3, #16] - hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; - 8001948: 4b25 ldr r3, [pc, #148] ; (80019e0 ) - 800194a: 2204 movs r2, #4 - 800194c: 615a str r2, [r3, #20] - hadc1.Init.LowPowerAutoWait = DISABLE; - 800194e: 4b24 ldr r3, [pc, #144] ; (80019e0 ) - 8001950: 2200 movs r2, #0 - 8001952: 761a strb r2, [r3, #24] - hadc1.Init.LowPowerAutoPowerOff = DISABLE; - 8001954: 4b22 ldr r3, [pc, #136] ; (80019e0 ) - 8001956: 2200 movs r2, #0 - 8001958: 765a strb r2, [r3, #25] - hadc1.Init.ContinuousConvMode = DISABLE; - 800195a: 4b21 ldr r3, [pc, #132] ; (80019e0 ) - 800195c: 2200 movs r2, #0 - 800195e: 769a strb r2, [r3, #26] - hadc1.Init.NbrOfConversion = 1; - 8001960: 4b1f ldr r3, [pc, #124] ; (80019e0 ) - 8001962: 2201 movs r2, #1 - 8001964: 61da str r2, [r3, #28] - hadc1.Init.DiscontinuousConvMode = DISABLE; - 8001966: 4b1e ldr r3, [pc, #120] ; (80019e0 ) - 8001968: 2220 movs r2, #32 - 800196a: 2100 movs r1, #0 - 800196c: 5499 strb r1, [r3, r2] - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - 800196e: 4b1c ldr r3, [pc, #112] ; (80019e0 ) - 8001970: 2200 movs r2, #0 - 8001972: 625a str r2, [r3, #36] ; 0x24 - hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; - 8001974: 4b1a ldr r3, [pc, #104] ; (80019e0 ) - 8001976: 2200 movs r2, #0 - 8001978: 629a str r2, [r3, #40] ; 0x28 - hadc1.Init.DMAContinuousRequests = DISABLE; - 800197a: 4b19 ldr r3, [pc, #100] ; (80019e0 ) - 800197c: 222c movs r2, #44 ; 0x2c - 800197e: 2100 movs r1, #0 - 8001980: 5499 strb r1, [r3, r2] - hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED; - 8001982: 4b17 ldr r3, [pc, #92] ; (80019e0 ) - 8001984: 2200 movs r2, #0 - 8001986: 631a str r2, [r3, #48] ; 0x30 - hadc1.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_3CYCLES_5; - 8001988: 4b15 ldr r3, [pc, #84] ; (80019e0 ) - 800198a: 2201 movs r2, #1 - 800198c: 635a str r2, [r3, #52] ; 0x34 - hadc1.Init.SamplingTimeCommon2 = ADC_SAMPLETIME_3CYCLES_5; - 800198e: 4b14 ldr r3, [pc, #80] ; (80019e0 ) - 8001990: 2201 movs r2, #1 - 8001992: 639a str r2, [r3, #56] ; 0x38 - hadc1.Init.OversamplingMode = DISABLE; - 8001994: 4b12 ldr r3, [pc, #72] ; (80019e0 ) - 8001996: 223c movs r2, #60 ; 0x3c - 8001998: 2100 movs r1, #0 - 800199a: 5499 strb r1, [r3, r2] - hadc1.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH; - 800199c: 4b10 ldr r3, [pc, #64] ; (80019e0 ) - 800199e: 2200 movs r2, #0 - 80019a0: 64da str r2, [r3, #76] ; 0x4c - if (HAL_ADC_Init(&hadc1) != HAL_OK) - 80019a2: 4b0f ldr r3, [pc, #60] ; (80019e0 ) - 80019a4: 0018 movs r0, r3 - 80019a6: f004 fe09 bl 80065bc - 80019aa: 1e03 subs r3, r0, #0 - 80019ac: d001 beq.n 80019b2 - { - Error_Handler(); - 80019ae: f001 fee7 bl 8003780 - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_10; - 80019b2: 1d3b adds r3, r7, #4 - 80019b4: 4a0c ldr r2, [pc, #48] ; (80019e8 ) - 80019b6: 601a str r2, [r3, #0] - sConfig.Rank = ADC_REGULAR_RANK_1; - 80019b8: 1d3b adds r3, r7, #4 - 80019ba: 2200 movs r2, #0 - 80019bc: 605a str r2, [r3, #4] - sConfig.SamplingTime = ADC_SAMPLINGTIME_COMMON_1; - 80019be: 1d3b adds r3, r7, #4 - 80019c0: 2200 movs r2, #0 - 80019c2: 609a str r2, [r3, #8] - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - 80019c4: 1d3a adds r2, r7, #4 - 80019c6: 4b06 ldr r3, [pc, #24] ; (80019e0 ) - 80019c8: 0011 movs r1, r2 - 80019ca: 0018 movs r0, r3 - 80019cc: f005 f8c8 bl 8006b60 - 80019d0: 1e03 subs r3, r0, #0 - 80019d2: d001 beq.n 80019d8 - { - Error_Handler(); - 80019d4: f001 fed4 bl 8003780 - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_Init 2 */ - -} - 80019d8: 46c0 nop ; (mov r8, r8) - 80019da: 46bd mov sp, r7 - 80019dc: b004 add sp, #16 - 80019de: bd80 pop {r7, pc} - 80019e0: 200000d0 .word 0x200000d0 - 80019e4: 40012400 .word 0x40012400 - 80019e8: 28000400 .word 0x28000400 - -080019ec : - -void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) -{ - 80019ec: b590 push {r4, r7, lr} - 80019ee: b091 sub sp, #68 ; 0x44 - 80019f0: af00 add r7, sp, #0 - 80019f2: 6078 str r0, [r7, #4] - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80019f4: 232c movs r3, #44 ; 0x2c - 80019f6: 18fb adds r3, r7, r3 - 80019f8: 0018 movs r0, r3 - 80019fa: 2314 movs r3, #20 - 80019fc: 001a movs r2, r3 - 80019fe: 2100 movs r1, #0 - 8001a00: f00d f905 bl 800ec0e - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 8001a04: 2410 movs r4, #16 - 8001a06: 193b adds r3, r7, r4 - 8001a08: 0018 movs r0, r3 - 8001a0a: 231c movs r3, #28 - 8001a0c: 001a movs r2, r3 - 8001a0e: 2100 movs r1, #0 - 8001a10: f00d f8fd bl 800ec0e - if(adcHandle->Instance==ADC1) - 8001a14: 687b ldr r3, [r7, #4] - 8001a16: 681b ldr r3, [r3, #0] - 8001a18: 4a1f ldr r2, [pc, #124] ; (8001a98 ) - 8001a1a: 4293 cmp r3, r2 - 8001a1c: d138 bne.n 8001a90 - - /* USER CODE END ADC1_MspInit 0 */ - - /** Initializes the peripherals clocks - */ - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; - 8001a1e: 193b adds r3, r7, r4 - 8001a20: 2280 movs r2, #128 ; 0x80 - 8001a22: 01d2 lsls r2, r2, #7 - 8001a24: 601a str r2, [r3, #0] - PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK; - 8001a26: 193b adds r3, r7, r4 - 8001a28: 2200 movs r2, #0 - 8001a2a: 615a str r2, [r3, #20] - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 8001a2c: 193b adds r3, r7, r4 - 8001a2e: 0018 movs r0, r3 - 8001a30: f006 fc48 bl 80082c4 - 8001a34: 1e03 subs r3, r0, #0 - 8001a36: d001 beq.n 8001a3c - { - Error_Handler(); - 8001a38: f001 fea2 bl 8003780 - } - - /* ADC1 clock enable */ - __HAL_RCC_ADC_CLK_ENABLE(); - 8001a3c: 4b17 ldr r3, [pc, #92] ; (8001a9c ) - 8001a3e: 6c1a ldr r2, [r3, #64] ; 0x40 - 8001a40: 4b16 ldr r3, [pc, #88] ; (8001a9c ) - 8001a42: 2180 movs r1, #128 ; 0x80 - 8001a44: 0349 lsls r1, r1, #13 - 8001a46: 430a orrs r2, r1 - 8001a48: 641a str r2, [r3, #64] ; 0x40 - 8001a4a: 4b14 ldr r3, [pc, #80] ; (8001a9c ) - 8001a4c: 6c1a ldr r2, [r3, #64] ; 0x40 - 8001a4e: 2380 movs r3, #128 ; 0x80 - 8001a50: 035b lsls r3, r3, #13 - 8001a52: 4013 ands r3, r2 - 8001a54: 60fb str r3, [r7, #12] - 8001a56: 68fb ldr r3, [r7, #12] - - __HAL_RCC_GPIOB_CLK_ENABLE(); - 8001a58: 4b10 ldr r3, [pc, #64] ; (8001a9c ) - 8001a5a: 6b5a ldr r2, [r3, #52] ; 0x34 - 8001a5c: 4b0f ldr r3, [pc, #60] ; (8001a9c ) - 8001a5e: 2102 movs r1, #2 - 8001a60: 430a orrs r2, r1 - 8001a62: 635a str r2, [r3, #52] ; 0x34 - 8001a64: 4b0d ldr r3, [pc, #52] ; (8001a9c ) - 8001a66: 6b5b ldr r3, [r3, #52] ; 0x34 - 8001a68: 2202 movs r2, #2 - 8001a6a: 4013 ands r3, r2 - 8001a6c: 60bb str r3, [r7, #8] - 8001a6e: 68bb ldr r3, [r7, #8] - /**ADC1 GPIO Configuration - PB2 ------> ADC1_IN10 - */ - GPIO_InitStruct.Pin = GPIO_PIN_2; - 8001a70: 212c movs r1, #44 ; 0x2c - 8001a72: 187b adds r3, r7, r1 - 8001a74: 2204 movs r2, #4 - 8001a76: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 8001a78: 187b adds r3, r7, r1 - 8001a7a: 2203 movs r2, #3 - 8001a7c: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001a7e: 187b adds r3, r7, r1 - 8001a80: 2200 movs r2, #0 - 8001a82: 609a str r2, [r3, #8] - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001a84: 187b adds r3, r7, r1 - 8001a86: 4a06 ldr r2, [pc, #24] ; (8001aa0 ) - 8001a88: 0019 movs r1, r3 - 8001a8a: 0010 movs r0, r2 - 8001a8c: f005 fd6a bl 8007564 - - /* USER CODE BEGIN ADC1_MspInit 1 */ - - /* USER CODE END ADC1_MspInit 1 */ - } -} - 8001a90: 46c0 nop ; (mov r8, r8) - 8001a92: 46bd mov sp, r7 - 8001a94: b011 add sp, #68 ; 0x44 - 8001a96: bd90 pop {r4, r7, pc} - 8001a98: 40012400 .word 0x40012400 - 8001a9c: 40021000 .word 0x40021000 - 8001aa0: 50000400 .word 0x50000400 - -08001aa4 : -/** - * @brief FreeRTOS initialization - * @param None - * @retval None - */ -void MX_FREERTOS_Init(void) { - 8001aa4: b580 push {r7, lr} - 8001aa6: af00 add r7, sp, #0 - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - /* Create the mutex(es) */ - /* creation of mutScreen */ - mutScreenHandle = osMutexNew(&mutScreen_attributes); - 8001aa8: 4b1f ldr r3, [pc, #124] ; (8001b28 ) - 8001aaa: 0018 movs r0, r3 - 8001aac: f00a f88b bl 800bbc6 - 8001ab0: 0002 movs r2, r0 - 8001ab2: 4b1e ldr r3, [pc, #120] ; (8001b2c ) - 8001ab4: 601a str r2, [r3, #0] - /* add semaphores, ... */ - /* USER CODE END RTOS_SEMAPHORES */ - - /* Create the timer(s) */ - /* creation of secTimer */ - secTimerHandle = osTimerNew(clockTick, osTimerPeriodic, NULL, &secTimer_attributes); - 8001ab6: 4b1e ldr r3, [pc, #120] ; (8001b30 ) - 8001ab8: 481e ldr r0, [pc, #120] ; (8001b34 ) - 8001aba: 2200 movs r2, #0 - 8001abc: 2101 movs r1, #1 - 8001abe: f009 ff97 bl 800b9f0 - 8001ac2: 0002 movs r2, r0 - 8001ac4: 4b1c ldr r3, [pc, #112] ; (8001b38 ) - 8001ac6: 601a str r2, [r3, #0] - /* start timers, add new ones, ... */ - /* USER CODE END RTOS_TIMERS */ - - /* Create the queue(s) */ - /* creation of tempUpdate */ - tempUpdateHandle = osMessageQueueNew (8, sizeof(float), &tempUpdate_attributes); - 8001ac8: 4b1c ldr r3, [pc, #112] ; (8001b3c ) - 8001aca: 001a movs r2, r3 - 8001acc: 2104 movs r1, #4 - 8001ace: 2008 movs r0, #8 - 8001ad0: f00a f992 bl 800bdf8 - 8001ad4: 0002 movs r2, r0 - 8001ad6: 4b1a ldr r3, [pc, #104] ; (8001b40 ) - 8001ad8: 601a str r2, [r3, #0] - - /* creation of newTouch */ - newTouchHandle = osMessageQueueNew (8, sizeof(TouchPoint), &newTouch_attributes); - 8001ada: 4b1a ldr r3, [pc, #104] ; (8001b44 ) - 8001adc: 001a movs r2, r3 - 8001ade: 2106 movs r1, #6 - 8001ae0: 2008 movs r0, #8 - 8001ae2: f00a f989 bl 800bdf8 - 8001ae6: 0002 movs r2, r0 - 8001ae8: 4b17 ldr r3, [pc, #92] ; (8001b48 ) - 8001aea: 601a str r2, [r3, #0] - /* add queues, ... */ - /* USER CODE END RTOS_QUEUES */ - - /* Create the thread(s) */ - /* creation of display_svc */ - display_svcHandle = osThreadNew(svc_display, NULL, &display_svc_attributes); - 8001aec: 4a17 ldr r2, [pc, #92] ; (8001b4c ) - 8001aee: 4b18 ldr r3, [pc, #96] ; (8001b50 ) - 8001af0: 2100 movs r1, #0 - 8001af2: 0018 movs r0, r3 - 8001af4: f009 feb2 bl 800b85c - 8001af8: 0002 movs r2, r0 - 8001afa: 4b16 ldr r3, [pc, #88] ; (8001b54 ) - 8001afc: 601a str r2, [r3, #0] - - /* creation of sensor_svc */ - sensor_svcHandle = osThreadNew(svc_sensor, NULL, &sensor_svc_attributes); - 8001afe: 4a16 ldr r2, [pc, #88] ; (8001b58 ) - 8001b00: 4b16 ldr r3, [pc, #88] ; (8001b5c ) - 8001b02: 2100 movs r1, #0 - 8001b04: 0018 movs r0, r3 - 8001b06: f009 fea9 bl 800b85c - 8001b0a: 0002 movs r2, r0 - 8001b0c: 4b14 ldr r3, [pc, #80] ; (8001b60 ) - 8001b0e: 601a str r2, [r3, #0] - - /* creation of touch_svc */ - touch_svcHandle = osThreadNew(svc_touch, NULL, &touch_svc_attributes); - 8001b10: 4a14 ldr r2, [pc, #80] ; (8001b64 ) - 8001b12: 4b15 ldr r3, [pc, #84] ; (8001b68 ) - 8001b14: 2100 movs r1, #0 - 8001b16: 0018 movs r0, r3 - 8001b18: f009 fea0 bl 800b85c - 8001b1c: 0002 movs r2, r0 - 8001b1e: 4b13 ldr r3, [pc, #76] ; (8001b6c ) - 8001b20: 601a str r2, [r3, #0] - - /* USER CODE BEGIN RTOS_EVENTS */ - /* add events, ... */ - /* USER CODE END RTOS_EVENTS */ - -} - 8001b22: 46c0 nop ; (mov r8, r8) - 8001b24: 46bd mov sp, r7 - 8001b26: bd80 pop {r7, pc} - 8001b28: 0800ffe8 .word 0x0800ffe8 - 8001b2c: 20000168 .word 0x20000168 - 8001b30: 0800ffd8 .word 0x0800ffd8 - 8001b34: 08002129 .word 0x08002129 - 8001b38: 20000164 .word 0x20000164 - 8001b3c: 0800ffa8 .word 0x0800ffa8 - 8001b40: 2000015c .word 0x2000015c - 8001b44: 0800ffc0 .word 0x0800ffc0 - 8001b48: 20000160 .word 0x20000160 - 8001b4c: 0800ff3c .word 0x0800ff3c - 8001b50: 08001b71 .word 0x08001b71 - 8001b54: 20000150 .word 0x20000150 - 8001b58: 0800ff60 .word 0x0800ff60 - 8001b5c: 08001eb9 .word 0x08001eb9 - 8001b60: 20000154 .word 0x20000154 - 8001b64: 0800ff84 .word 0x0800ff84 - 8001b68: 08002089 .word 0x08002089 - 8001b6c: 20000158 .word 0x20000158 - -08001b70 : - * @param argument: Not used - * @retval None - */ -/* USER CODE END Header_svc_display */ -void svc_display(void *argument) -{ - 8001b70: b5b0 push {r4, r5, r7, lr} - 8001b72: b088 sub sp, #32 - 8001b74: af02 add r7, sp, #8 - 8001b76: 6078 str r0, [r7, #4] - float temp; - int in; - static char str[12] = {0}; - static uint8_t id, lpcnt = 0, lastPressed = 0xFF; - - if (settings.boot_screen) { - 8001b78: 4bbc ldr r3, [pc, #752] ; (8001e6c ) - 8001b7a: 795b ldrb r3, [r3, #5] - 8001b7c: 2b00 cmp r3, #0 - 8001b7e: d006 beq.n 8001b8e - drawBootScreen(); - 8001b80: f000 fdce bl 8002720 - osDelay(4000); - 8001b84: 23fa movs r3, #250 ; 0xfa - 8001b86: 011b lsls r3, r3, #4 - 8001b88: 0018 movs r0, r3 - 8001b8a: f009 fefd bl 800b988 - } - - drawMainScreen(); - 8001b8e: f000 fe2d bl 80027ec - - for(;;) - { - //iterations counter to "unpress" buttons and free double press protection - if (lastPressed != 0xFF) { - 8001b92: 4bb7 ldr r3, [pc, #732] ; (8001e70 ) - 8001b94: 781b ldrb r3, [r3, #0] - 8001b96: 2bff cmp r3, #255 ; 0xff - 8001b98: d02b beq.n 8001bf2 - if (lpcnt > 2) { - 8001b9a: 4bb6 ldr r3, [pc, #728] ; (8001e74 ) - 8001b9c: 781b ldrb r3, [r3, #0] - 8001b9e: 2b02 cmp r3, #2 - 8001ba0: d921 bls.n 8001be6 - if (Screen == SCR_SETTINGS && lastPressed != BTN_COG) { - 8001ba2: 4bb5 ldr r3, [pc, #724] ; (8001e78 ) - 8001ba4: 781b ldrb r3, [r3, #0] - 8001ba6: 2b02 cmp r3, #2 - 8001ba8: d116 bne.n 8001bd8 - 8001baa: 4bb1 ldr r3, [pc, #708] ; (8001e70 ) - 8001bac: 781b ldrb r3, [r3, #0] - 8001bae: 2b05 cmp r3, #5 - 8001bb0: d012 beq.n 8001bd8 - osMutexAcquire(mutScreenHandle, osWaitForever); - 8001bb2: 4bb2 ldr r3, [pc, #712] ; (8001e7c ) - 8001bb4: 681b ldr r3, [r3, #0] - 8001bb6: 2201 movs r2, #1 - 8001bb8: 4252 negs r2, r2 - 8001bba: 0011 movs r1, r2 - 8001bbc: 0018 movs r0, r3 - 8001bbe: f00a f88e bl 800bcde - drawButton(lastPressed, 0); - 8001bc2: 4bab ldr r3, [pc, #684] ; (8001e70 ) - 8001bc4: 781b ldrb r3, [r3, #0] - 8001bc6: 2100 movs r1, #0 - 8001bc8: 0018 movs r0, r3 - 8001bca: f001 fb9b bl 8003304 - osMutexRelease(mutScreenHandle); - 8001bce: 4bab ldr r3, [pc, #684] ; (8001e7c ) - 8001bd0: 681b ldr r3, [r3, #0] - 8001bd2: 0018 movs r0, r3 - 8001bd4: f00a f8d2 bl 800bd7c - } - lpcnt = 0; - 8001bd8: 4ba6 ldr r3, [pc, #664] ; (8001e74 ) - 8001bda: 2200 movs r2, #0 - 8001bdc: 701a strb r2, [r3, #0] - lastPressed = 0xFF; - 8001bde: 4ba4 ldr r3, [pc, #656] ; (8001e70 ) - 8001be0: 22ff movs r2, #255 ; 0xff - 8001be2: 701a strb r2, [r3, #0] - 8001be4: e005 b.n 8001bf2 - } else lpcnt++; - 8001be6: 4ba3 ldr r3, [pc, #652] ; (8001e74 ) - 8001be8: 781b ldrb r3, [r3, #0] - 8001bea: 3301 adds r3, #1 - 8001bec: b2da uxtb r2, r3 - 8001bee: 4ba1 ldr r3, [pc, #644] ; (8001e74 ) - 8001bf0: 701a strb r2, [r3, #0] - } - //Check if there are messages in the Touch queue - if (osMessageQueueGetCount(newTouchHandle) > 0) { - 8001bf2: 4ba3 ldr r3, [pc, #652] ; (8001e80 ) - 8001bf4: 681b ldr r3, [r3, #0] - 8001bf6: 0018 movs r0, r3 - 8001bf8: f00a fa2e bl 800c058 - 8001bfc: 1e03 subs r3, r0, #0 - 8001bfe: d100 bne.n 8001c02 - 8001c00: e0cf b.n 8001da2 - osMessageQueueGet(newTouchHandle, &t, NULL, 100); - 8001c02: 4b9f ldr r3, [pc, #636] ; (8001e80 ) - 8001c04: 6818 ldr r0, [r3, #0] - 8001c06: 230c movs r3, #12 - 8001c08: 18f9 adds r1, r7, r3 - 8001c0a: 2364 movs r3, #100 ; 0x64 - 8001c0c: 2200 movs r2, #0 - 8001c0e: f00a f9c9 bl 800bfa4 - ST7793_DrawString(Black, Lightgray, str, 205, 75); - osMutexRelease(mutScreenHandle); -*/ - //Each screen has a set of buttons - //Check if user has touched a button - for (id = 0; id < BTN_COUNT; id++) { - 8001c12: 4b9c ldr r3, [pc, #624] ; (8001e84 ) - 8001c14: 2200 movs r2, #0 - 8001c16: 701a strb r2, [r3, #0] - 8001c18: e0be b.n 8001d98 - if (id != lastPressed && - 8001c1a: 4b9a ldr r3, [pc, #616] ; (8001e84 ) - 8001c1c: 781a ldrb r2, [r3, #0] - 8001c1e: 4b94 ldr r3, [pc, #592] ; (8001e70 ) - 8001c20: 781b ldrb r3, [r3, #0] - 8001c22: 429a cmp r2, r3 - 8001c24: d100 bne.n 8001c28 - 8001c26: e0b1 b.n 8001d8c - (scr_buttons[Screen] >> id) & 1 && - 8001c28: 4b93 ldr r3, [pc, #588] ; (8001e78 ) - 8001c2a: 781b ldrb r3, [r3, #0] - 8001c2c: 001a movs r2, r3 - 8001c2e: 4b96 ldr r3, [pc, #600] ; (8001e88 ) - 8001c30: 0092 lsls r2, r2, #2 - 8001c32: 58d3 ldr r3, [r2, r3] - 8001c34: 4a93 ldr r2, [pc, #588] ; (8001e84 ) - 8001c36: 7812 ldrb r2, [r2, #0] - 8001c38: 40d3 lsrs r3, r2 - 8001c3a: 2201 movs r2, #1 - 8001c3c: 4013 ands r3, r2 - if (id != lastPressed && - 8001c3e: d100 bne.n 8001c42 - 8001c40: e0a4 b.n 8001d8c - ST7793_TouchInRect(&t, buttons[id].x, buttons[id].y, buttons[id].x2, buttons[id].y2) - 8001c42: 4b90 ldr r3, [pc, #576] ; (8001e84 ) - 8001c44: 781b ldrb r3, [r3, #0] - 8001c46: 0019 movs r1, r3 - 8001c48: 4a90 ldr r2, [pc, #576] ; (8001e8c ) - 8001c4a: 000b movs r3, r1 - 8001c4c: 009b lsls r3, r3, #2 - 8001c4e: 185b adds r3, r3, r1 - 8001c50: 009b lsls r3, r3, #2 - 8001c52: 18d3 adds r3, r2, r3 - 8001c54: 3306 adds r3, #6 - 8001c56: 8819 ldrh r1, [r3, #0] - 8001c58: 4b8a ldr r3, [pc, #552] ; (8001e84 ) - 8001c5a: 781b ldrb r3, [r3, #0] - 8001c5c: 0018 movs r0, r3 - 8001c5e: 4a8b ldr r2, [pc, #556] ; (8001e8c ) - 8001c60: 0003 movs r3, r0 - 8001c62: 009b lsls r3, r3, #2 - 8001c64: 181b adds r3, r3, r0 - 8001c66: 009b lsls r3, r3, #2 - 8001c68: 18d3 adds r3, r2, r3 - 8001c6a: 3308 adds r3, #8 - 8001c6c: 881c ldrh r4, [r3, #0] - 8001c6e: 4b85 ldr r3, [pc, #532] ; (8001e84 ) - 8001c70: 781b ldrb r3, [r3, #0] - 8001c72: 0018 movs r0, r3 - 8001c74: 4a85 ldr r2, [pc, #532] ; (8001e8c ) - 8001c76: 0003 movs r3, r0 - 8001c78: 009b lsls r3, r3, #2 - 8001c7a: 181b adds r3, r3, r0 - 8001c7c: 009b lsls r3, r3, #2 - 8001c7e: 18d3 adds r3, r2, r3 - 8001c80: 330a adds r3, #10 - 8001c82: 881d ldrh r5, [r3, #0] - 8001c84: 4b7f ldr r3, [pc, #508] ; (8001e84 ) - 8001c86: 781b ldrb r3, [r3, #0] - 8001c88: 0018 movs r0, r3 - 8001c8a: 4a80 ldr r2, [pc, #512] ; (8001e8c ) - 8001c8c: 0003 movs r3, r0 - 8001c8e: 009b lsls r3, r3, #2 - 8001c90: 181b adds r3, r3, r0 - 8001c92: 009b lsls r3, r3, #2 - 8001c94: 18d3 adds r3, r2, r3 - 8001c96: 330c adds r3, #12 - 8001c98: 881b ldrh r3, [r3, #0] - 8001c9a: 220c movs r2, #12 - 8001c9c: 18b8 adds r0, r7, r2 - 8001c9e: 9300 str r3, [sp, #0] - 8001ca0: 002b movs r3, r5 - 8001ca2: 0022 movs r2, r4 - 8001ca4: f003 fcfa bl 800569c - 8001ca8: 1e03 subs r3, r0, #0 - (scr_buttons[Screen] >> id) & 1 && - 8001caa: d06f beq.n 8001d8c - ) { - - lastPressed = id; - 8001cac: 4b75 ldr r3, [pc, #468] ; (8001e84 ) - 8001cae: 781a ldrb r2, [r3, #0] - 8001cb0: 4b6f ldr r3, [pc, #444] ; (8001e70 ) - 8001cb2: 701a strb r2, [r3, #0] - playSound(S_CLICK); - 8001cb4: 2002 movs r0, #2 - 8001cb6: f001 fad7 bl 8003268 - - osMutexAcquire(mutScreenHandle, osWaitForever); - 8001cba: 4b70 ldr r3, [pc, #448] ; (8001e7c ) - 8001cbc: 681b ldr r3, [r3, #0] - 8001cbe: 2201 movs r2, #1 - 8001cc0: 4252 negs r2, r2 - 8001cc2: 0011 movs r1, r2 - 8001cc4: 0018 movs r0, r3 - 8001cc6: f00a f80a bl 800bcde - if (id < 4) { - 8001cca: 4b6e ldr r3, [pc, #440] ; (8001e84 ) - 8001ccc: 781b ldrb r3, [r3, #0] - 8001cce: 2b03 cmp r3, #3 - 8001cd0: d835 bhi.n 8001d3e - ST7793_SetFontSize(buttons[Preset].fontsize); - 8001cd2: 4b6f ldr r3, [pc, #444] ; (8001e90 ) - 8001cd4: 781b ldrb r3, [r3, #0] - 8001cd6: 0019 movs r1, r3 - 8001cd8: 4a6c ldr r2, [pc, #432] ; (8001e8c ) - 8001cda: 000b movs r3, r1 - 8001cdc: 009b lsls r3, r3, #2 - 8001cde: 185b adds r3, r3, r1 - 8001ce0: 009b lsls r3, r3, #2 - 8001ce2: 18d3 adds r3, r2, r3 - 8001ce4: 330e adds r3, #14 - 8001ce6: 781b ldrb r3, [r3, #0] - 8001ce8: 0018 movs r0, r3 - 8001cea: f002 fbed bl 80044c8 - drawButton(Preset, 0); - 8001cee: 4b68 ldr r3, [pc, #416] ; (8001e90 ) - 8001cf0: 781b ldrb r3, [r3, #0] - 8001cf2: 2100 movs r1, #0 - 8001cf4: 0018 movs r0, r3 - 8001cf6: f001 fb05 bl 8003304 - //ST7793_DrawButton(buttons[Preset].btn_type, buttons[Preset].color, buttons[Preset].textcolor, buttons[Preset].x, buttons[Preset].y, buttons[Preset].x2, buttons[Preset].y2, buttons[Preset].data, 0); - Preset = id; - 8001cfa: 4b62 ldr r3, [pc, #392] ; (8001e84 ) - 8001cfc: 781a ldrb r2, [r3, #0] - 8001cfe: 4b64 ldr r3, [pc, #400] ; (8001e90 ) - 8001d00: 701a strb r2, [r3, #0] - ST7793_SetFontSize(1); - 8001d02: 2001 movs r0, #1 - 8001d04: f002 fbe0 bl 80044c8 - ST7793_FillRect(Darkergray, 10, 18, 190, 34); - 8001d08: 4862 ldr r0, [pc, #392] ; (8001e94 ) - 8001d0a: 2322 movs r3, #34 ; 0x22 - 8001d0c: 9300 str r3, [sp, #0] - 8001d0e: 23be movs r3, #190 ; 0xbe - 8001d10: 2212 movs r2, #18 - 8001d12: 210a movs r1, #10 - 8001d14: f002 f9f8 bl 8004108 - ST7793_DrawStringC(White, Darkergray, presets[Preset].name, 10, 18); - 8001d18: 4b5d ldr r3, [pc, #372] ; (8001e90 ) - 8001d1a: 781b ldrb r3, [r3, #0] - 8001d1c: 001a movs r2, r3 - 8001d1e: 0013 movs r3, r2 - 8001d20: 009b lsls r3, r3, #2 - 8001d22: 189b adds r3, r3, r2 - 8001d24: 00db lsls r3, r3, #3 - 8001d26: 3310 adds r3, #16 - 8001d28: 001a movs r2, r3 - 8001d2a: 4b5b ldr r3, [pc, #364] ; (8001e98 ) - 8001d2c: 18d3 adds r3, r2, r3 - 8001d2e: 1d1a adds r2, r3, #4 - 8001d30: 4958 ldr r1, [pc, #352] ; (8001e94 ) - 8001d32: 485a ldr r0, [pc, #360] ; (8001e9c ) - 8001d34: 2312 movs r3, #18 - 8001d36: 9300 str r3, [sp, #0] - 8001d38: 230a movs r3, #10 - 8001d3a: f002 fe37 bl 80049ac - } - ST7793_SetFontSize(buttons[id].fontsize); - 8001d3e: 4b51 ldr r3, [pc, #324] ; (8001e84 ) - 8001d40: 781b ldrb r3, [r3, #0] - 8001d42: 0019 movs r1, r3 - 8001d44: 4a51 ldr r2, [pc, #324] ; (8001e8c ) - 8001d46: 000b movs r3, r1 - 8001d48: 009b lsls r3, r3, #2 - 8001d4a: 185b adds r3, r3, r1 - 8001d4c: 009b lsls r3, r3, #2 - 8001d4e: 18d3 adds r3, r2, r3 - 8001d50: 330e adds r3, #14 - 8001d52: 781b ldrb r3, [r3, #0] - 8001d54: 0018 movs r0, r3 - 8001d56: f002 fbb7 bl 80044c8 - drawButton(id, 1); - 8001d5a: 4b4a ldr r3, [pc, #296] ; (8001e84 ) - 8001d5c: 781b ldrb r3, [r3, #0] - 8001d5e: 2101 movs r1, #1 - 8001d60: 0018 movs r0, r3 - 8001d62: f001 facf bl 8003304 - //ST7793_DrawButton(buttons[id].btn_type,buttons[id].color, buttons[id].textcolor, buttons[id].x, buttons[id].y, buttons[id].x2, buttons[id].y2, buttons[id].data, 1); - if (id < 4) drawPlan(0, 1, 0); - 8001d66: 4b47 ldr r3, [pc, #284] ; (8001e84 ) - 8001d68: 781b ldrb r3, [r3, #0] - 8001d6a: 2b03 cmp r3, #3 - 8001d6c: d804 bhi.n 8001d78 - 8001d6e: 2200 movs r2, #0 - 8001d70: 2101 movs r1, #1 - 8001d72: 2000 movs r0, #0 - 8001d74: f000 fed8 bl 8002b28 - osMutexRelease(mutScreenHandle); - 8001d78: 4b40 ldr r3, [pc, #256] ; (8001e7c ) - 8001d7a: 681b ldr r3, [r3, #0] - 8001d7c: 0018 movs r0, r3 - 8001d7e: f009 fffd bl 800bd7c - - btnPressed(id); - 8001d82: 4b40 ldr r3, [pc, #256] ; (8001e84 ) - 8001d84: 781b ldrb r3, [r3, #0] - 8001d86: 0018 movs r0, r3 - 8001d88: f000 fbfe bl 8002588 - for (id = 0; id < BTN_COUNT; id++) { - 8001d8c: 4b3d ldr r3, [pc, #244] ; (8001e84 ) - 8001d8e: 781b ldrb r3, [r3, #0] - 8001d90: 3301 adds r3, #1 - 8001d92: b2da uxtb r2, r3 - 8001d94: 4b3b ldr r3, [pc, #236] ; (8001e84 ) - 8001d96: 701a strb r2, [r3, #0] - 8001d98: 4b3a ldr r3, [pc, #232] ; (8001e84 ) - 8001d9a: 781b ldrb r3, [r3, #0] - 8001d9c: 2b13 cmp r3, #19 - 8001d9e: d800 bhi.n 8001da2 - 8001da0: e73b b.n 8001c1a - } // check if the button is pressed (if) - } // button iterator (for) - } // Touch handler (if) - - //Check temperature queue ° - if (osMessageQueueGetCount(tempUpdateHandle) > 0) { - 8001da2: 4b3f ldr r3, [pc, #252] ; (8001ea0 ) - 8001da4: 681b ldr r3, [r3, #0] - 8001da6: 0018 movs r0, r3 - 8001da8: f00a f956 bl 800c058 - 8001dac: 1e03 subs r3, r0, #0 - 8001dae: d059 beq.n 8001e64 - osMessageQueueGet(tempUpdateHandle, &temp, NULL, 100); - 8001db0: 4b3b ldr r3, [pc, #236] ; (8001ea0 ) - 8001db2: 6818 ldr r0, [r3, #0] - 8001db4: 2308 movs r3, #8 - 8001db6: 18f9 adds r1, r7, r3 - 8001db8: 2364 movs r3, #100 ; 0x64 - 8001dba: 2200 movs r2, #0 - 8001dbc: f00a f8f2 bl 800bfa4 - if (Screen == SCR_MAIN || Screen == SCR_RUNNING) { - 8001dc0: 4b2d ldr r3, [pc, #180] ; (8001e78 ) - 8001dc2: 781b ldrb r3, [r3, #0] - 8001dc4: 2b00 cmp r3, #0 - 8001dc6: d003 beq.n 8001dd0 - 8001dc8: 4b2b ldr r3, [pc, #172] ; (8001e78 ) - 8001dca: 781b ldrb r3, [r3, #0] - 8001dcc: 2b01 cmp r3, #1 - 8001dce: d149 bne.n 8001e64 - if (temp >= 0.0f) { - 8001dd0: 68bb ldr r3, [r7, #8] - 8001dd2: 2100 movs r1, #0 - 8001dd4: 1c18 adds r0, r3, #0 - 8001dd6: f7fe fb4f bl 8000478 <__aeabi_fcmpge> - 8001dda: 1e03 subs r3, r0, #0 - 8001ddc: d00c beq.n 8001df8 - in = (int)temp; - 8001dde: 68bb ldr r3, [r7, #8] - 8001de0: 1c18 adds r0, r3, #0 - 8001de2: f7ff f9a5 bl 8001130 <__aeabi_f2iz> - 8001de6: 0003 movs r3, r0 - 8001de8: 617b str r3, [r7, #20] - //in = 215; - //fr = (int)((temp-in)*100); - snprintf(str, 9, "%3d\xB0\x43", in); - 8001dea: 697b ldr r3, [r7, #20] - 8001dec: 4a2d ldr r2, [pc, #180] ; (8001ea4 ) - 8001dee: 482e ldr r0, [pc, #184] ; (8001ea8 ) - 8001df0: 2109 movs r1, #9 - 8001df2: f00d f833 bl 800ee5c - 8001df6: e01a b.n 8001e2e - } else { - if (temp == -2.0f) snprintf(str, 3, "NC"); - 8001df8: 68bb ldr r3, [r7, #8] - 8001dfa: 21c0 movs r1, #192 ; 0xc0 - 8001dfc: 0609 lsls r1, r1, #24 - 8001dfe: 1c18 adds r0, r3, #0 - 8001e00: f7fe fb16 bl 8000430 <__aeabi_fcmpeq> - 8001e04: 1e03 subs r3, r0, #0 - 8001e06: d005 beq.n 8001e14 - 8001e08: 4a28 ldr r2, [pc, #160] ; (8001eac ) - 8001e0a: 4b27 ldr r3, [pc, #156] ; (8001ea8 ) - 8001e0c: 2103 movs r1, #3 - 8001e0e: 0018 movs r0, r3 - 8001e10: f00d f824 bl 800ee5c - if (temp == -1.0f) snprintf(str, 4, "SPI"); - 8001e14: 68bb ldr r3, [r7, #8] - 8001e16: 4926 ldr r1, [pc, #152] ; (8001eb0 ) - 8001e18: 1c18 adds r0, r3, #0 - 8001e1a: f7fe fb09 bl 8000430 <__aeabi_fcmpeq> - 8001e1e: 1e03 subs r3, r0, #0 - 8001e20: d005 beq.n 8001e2e - 8001e22: 4a24 ldr r2, [pc, #144] ; (8001eb4 ) - 8001e24: 4b20 ldr r3, [pc, #128] ; (8001ea8 ) - 8001e26: 2104 movs r1, #4 - 8001e28: 0018 movs r0, r3 - 8001e2a: f00d f817 bl 800ee5c - } - - osMutexAcquire(mutScreenHandle, osWaitForever); - 8001e2e: 4b13 ldr r3, [pc, #76] ; (8001e7c ) - 8001e30: 681b ldr r3, [r3, #0] - 8001e32: 2201 movs r2, #1 - 8001e34: 4252 negs r2, r2 - 8001e36: 0011 movs r1, r2 - 8001e38: 0018 movs r0, r3 - 8001e3a: f009 ff50 bl 800bcde - ST7793_SetFontSize(2); - 8001e3e: 2002 movs r0, #2 - 8001e40: f002 fb42 bl 80044c8 - //ST7793_FillRect(Darkergray, 374, 208, 390, 235); - ST7793_DrawString(Red, Darkergray, str, 310, 208); - 8001e44: 239b movs r3, #155 ; 0x9b - 8001e46: 005b lsls r3, r3, #1 - 8001e48: 4a17 ldr r2, [pc, #92] ; (8001ea8 ) - 8001e4a: 4c12 ldr r4, [pc, #72] ; (8001e94 ) - 8001e4c: 21f8 movs r1, #248 ; 0xf8 - 8001e4e: 0208 lsls r0, r1, #8 - 8001e50: 21d0 movs r1, #208 ; 0xd0 - 8001e52: 9100 str r1, [sp, #0] - 8001e54: 0021 movs r1, r4 - 8001e56: f002 fd59 bl 800490c - osMutexRelease(mutScreenHandle); - 8001e5a: 4b08 ldr r3, [pc, #32] ; (8001e7c ) - 8001e5c: 681b ldr r3, [r3, #0] - 8001e5e: 0018 movs r0, r3 - 8001e60: f009 ff8c bl 800bd7c - } - } - - - osDelay(50); - 8001e64: 2032 movs r0, #50 ; 0x32 - 8001e66: f009 fd8f bl 800b988 - if (lastPressed != 0xFF) { - 8001e6a: e692 b.n 8001b92 - 8001e6c: 20000004 .word 0x20000004 - 8001e70: 2000003e .word 0x2000003e - 8001e74: 20000176 .word 0x20000176 - 8001e78: 20000000 .word 0x20000000 - 8001e7c: 20000168 .word 0x20000168 - 8001e80: 20000160 .word 0x20000160 - 8001e84: 20000177 .word 0x20000177 - 8001e88: 0800fe64 .word 0x0800fe64 - 8001e8c: 0800fcd4 .word 0x0800fcd4 - 8001e90: 20000134 .word 0x20000134 - 8001e94: 000039c7 .word 0x000039c7 - 8001e98: 0800fe9c .word 0x0800fe9c - 8001e9c: 0000ffff .word 0x0000ffff - 8001ea0: 2000015c .word 0x2000015c - 8001ea4: 0800f6b8 .word 0x0800f6b8 - 8001ea8: 20000178 .word 0x20000178 - 8001eac: 0800f6c0 .word 0x0800f6c0 - 8001eb0: bf800000 .word 0xbf800000 - 8001eb4: 0800f6c4 .word 0x0800f6c4 - -08001eb8 : -* @param argument: Not used -* @retval None -*/ -/* USER CODE END Header_svc_sensor */ -void svc_sensor(void *argument) -{ - 8001eb8: b590 push {r4, r7, lr} - 8001eba: b08b sub sp, #44 ; 0x2c - 8001ebc: af02 add r7, sp, #8 - 8001ebe: 6078 str r0, [r7, #4] - uint8_t i; - uint16_t pulse; - int in, fr; - static char str[12] = {0}; - - PID_Init(&pid); - 8001ec0: 4b64 ldr r3, [pc, #400] ; (8002054 ) - 8001ec2: 0018 movs r0, r3 - 8001ec4: f001 fcb6 bl 8003834 - - for(;;) - { - res = 0; - 8001ec8: 2300 movs r3, #0 - 8001eca: 60bb str r3, [r7, #8] - for (i=0; i<3; i++) { //Taking 3 measures - 8001ecc: 2317 movs r3, #23 - 8001ece: 18fb adds r3, r7, r3 - 8001ed0: 2200 movs r2, #0 - 8001ed2: 701a strb r2, [r3, #0] - 8001ed4: e016 b.n 8001f04 - temp = MAX6675_GetTemp(); - 8001ed6: f001 fc59 bl 800378c - 8001eda: 1c03 adds r3, r0, #0 - 8001edc: 61fb str r3, [r7, #28] - if (temp < 0.0f) break; //if there is an error - break out - 8001ede: 2100 movs r1, #0 - 8001ee0: 69f8 ldr r0, [r7, #28] - 8001ee2: f7fe faab bl 800043c <__aeabi_fcmplt> - 8001ee6: 1e03 subs r3, r0, #0 - 8001ee8: d112 bne.n 8001f10 - res += temp; - 8001eea: 68bb ldr r3, [r7, #8] - 8001eec: 69f9 ldr r1, [r7, #28] - 8001eee: 1c18 adds r0, r3, #0 - 8001ef0: f7fe fae4 bl 80004bc <__aeabi_fadd> - 8001ef4: 1c03 adds r3, r0, #0 - 8001ef6: 60bb str r3, [r7, #8] - for (i=0; i<3; i++) { //Taking 3 measures - 8001ef8: 2117 movs r1, #23 - 8001efa: 187b adds r3, r7, r1 - 8001efc: 781a ldrb r2, [r3, #0] - 8001efe: 187b adds r3, r7, r1 - 8001f00: 3201 adds r2, #1 - 8001f02: 701a strb r2, [r3, #0] - 8001f04: 2317 movs r3, #23 - 8001f06: 18fb adds r3, r7, r3 - 8001f08: 781b ldrb r3, [r3, #0] - 8001f0a: 2b02 cmp r3, #2 - 8001f0c: d9e3 bls.n 8001ed6 - 8001f0e: e000 b.n 8001f12 - if (temp < 0.0f) break; //if there is an error - break out - 8001f10: 46c0 nop ; (mov r8, r8) - } - if (temp >= 0.0f) { - 8001f12: 2100 movs r1, #0 - 8001f14: 69f8 ldr r0, [r7, #28] - 8001f16: f7fe faaf bl 8000478 <__aeabi_fcmpge> - 8001f1a: 1e03 subs r3, r0, #0 - 8001f1c: d02d beq.n 8001f7a - res = res / 3; - 8001f1e: 68bb ldr r3, [r7, #8] - 8001f20: 494d ldr r1, [pc, #308] ; (8002058 ) - 8001f22: 1c18 adds r0, r3, #0 - 8001f24: f7fe fc68 bl 80007f8 <__aeabi_fdiv> - 8001f28: 1c03 adds r3, r0, #0 - 8001f2a: 60bb str r3, [r7, #8] - //PID - if (Preset == 2) { - 8001f2c: 4b4b ldr r3, [pc, #300] ; (800205c ) - 8001f2e: 781b ldrb r3, [r3, #0] - 8001f30: 2b02 cmp r3, #2 - 8001f32: d12c bne.n 8001f8e - PID_Update(&pid, 35.0f, res); - 8001f34: 68ba ldr r2, [r7, #8] - 8001f36: 494a ldr r1, [pc, #296] ; (8002060 ) - 8001f38: 4b46 ldr r3, [pc, #280] ; (8002054 ) - 8001f3a: 0018 movs r0, r3 - 8001f3c: f001 fc91 bl 8003862 - pulse = (uint16_t)(pid.limMax - pid.out)+20; - 8001f40: 4b44 ldr r3, [pc, #272] ; (8002054 ) - 8001f42: 695a ldr r2, [r3, #20] - 8001f44: 4b43 ldr r3, [pc, #268] ; (8002054 ) - 8001f46: 6adb ldr r3, [r3, #44] ; 0x2c - 8001f48: 1c19 adds r1, r3, #0 - 8001f4a: 1c10 adds r0, r2, #0 - 8001f4c: f7fe ff42 bl 8000dd4 <__aeabi_fsub> - 8001f50: 1c03 adds r3, r0, #0 - 8001f52: 1c18 adds r0, r3, #0 - 8001f54: f7fe fa9a bl 800048c <__aeabi_f2uiz> - 8001f58: 0003 movs r3, r0 - 8001f5a: b29a uxth r2, r3 - 8001f5c: 2114 movs r1, #20 - 8001f5e: 187b adds r3, r7, r1 - 8001f60: 3214 adds r2, #20 - 8001f62: 801a strh r2, [r3, #0] - TIM1->ARR = pulse+10; - 8001f64: 187b adds r3, r7, r1 - 8001f66: 881b ldrh r3, [r3, #0] - 8001f68: 330a adds r3, #10 - 8001f6a: 001a movs r2, r3 - 8001f6c: 4b3d ldr r3, [pc, #244] ; (8002064 ) - 8001f6e: 62da str r2, [r3, #44] ; 0x2c - TIM1->CCR2 = pulse; - 8001f70: 4b3c ldr r3, [pc, #240] ; (8002064 ) - 8001f72: 187a adds r2, r7, r1 - 8001f74: 8812 ldrh r2, [r2, #0] - 8001f76: 639a str r2, [r3, #56] ; 0x38 - 8001f78: e009 b.n 8001f8e - } - } else { - res = temp; - 8001f7a: 69fb ldr r3, [r7, #28] - 8001f7c: 60bb str r3, [r7, #8] - PID_Init(&pid); - 8001f7e: 4b35 ldr r3, [pc, #212] ; (8002054 ) - 8001f80: 0018 movs r0, r3 - 8001f82: f001 fc57 bl 8003834 - TIM1->CCR2 = 1020; - 8001f86: 4b37 ldr r3, [pc, #220] ; (8002064 ) - 8001f88: 22ff movs r2, #255 ; 0xff - 8001f8a: 0092 lsls r2, r2, #2 - 8001f8c: 639a str r2, [r3, #56] ; 0x38 - } - Temperature = res; - 8001f8e: 68ba ldr r2, [r7, #8] - 8001f90: 4b35 ldr r3, [pc, #212] ; (8002068 ) - 8001f92: 601a str r2, [r3, #0] - if (res != res_old) { - 8001f94: 68bb ldr r3, [r7, #8] - 8001f96: 1c19 adds r1, r3, #0 - 8001f98: 69b8 ldr r0, [r7, #24] - 8001f9a: f7fe fa49 bl 8000430 <__aeabi_fcmpeq> - 8001f9e: 1e03 subs r3, r0, #0 - 8001fa0: d109 bne.n 8001fb6 - res_old = res; - 8001fa2: 68bb ldr r3, [r7, #8] - 8001fa4: 61bb str r3, [r7, #24] - osMessageQueuePut(tempUpdateHandle, &res, 0, 50); - 8001fa6: 4b31 ldr r3, [pc, #196] ; (800206c ) - 8001fa8: 6818 ldr r0, [r3, #0] - 8001faa: 2308 movs r3, #8 - 8001fac: 18f9 adds r1, r7, r3 - 8001fae: 2332 movs r3, #50 ; 0x32 - 8001fb0: 2200 movs r2, #0 - 8001fb2: f009 ff9b bl 800beec - } - - //Draw PID value - if (Screen == SCR_RUNNING) { - 8001fb6: 4b2e ldr r3, [pc, #184] ; (8002070 ) - 8001fb8: 781b ldrb r3, [r3, #0] - 8001fba: 2b01 cmp r3, #1 - 8001fbc: d144 bne.n 8002048 - in = (int)(pid.out); - 8001fbe: 4b25 ldr r3, [pc, #148] ; (8002054 ) - 8001fc0: 6adb ldr r3, [r3, #44] ; 0x2c - 8001fc2: 1c18 adds r0, r3, #0 - 8001fc4: f7ff f8b4 bl 8001130 <__aeabi_f2iz> - 8001fc8: 0003 movs r3, r0 - 8001fca: 613b str r3, [r7, #16] - fr = (int)((pid.out-in)*100); - 8001fcc: 4b21 ldr r3, [pc, #132] ; (8002054 ) - 8001fce: 6adc ldr r4, [r3, #44] ; 0x2c - 8001fd0: 6938 ldr r0, [r7, #16] - 8001fd2: f7ff f8cd bl 8001170 <__aeabi_i2f> - 8001fd6: 1c03 adds r3, r0, #0 - 8001fd8: 1c19 adds r1, r3, #0 - 8001fda: 1c20 adds r0, r4, #0 - 8001fdc: f7fe fefa bl 8000dd4 <__aeabi_fsub> - 8001fe0: 1c03 adds r3, r0, #0 - 8001fe2: 4924 ldr r1, [pc, #144] ; (8002074 ) - 8001fe4: 1c18 adds r0, r3, #0 - 8001fe6: f7fe fdcf bl 8000b88 <__aeabi_fmul> - 8001fea: 1c03 adds r3, r0, #0 - 8001fec: 1c18 adds r0, r3, #0 - 8001fee: f7ff f89f bl 8001130 <__aeabi_f2iz> - 8001ff2: 0003 movs r3, r0 - 8001ff4: 60fb str r3, [r7, #12] - snprintf(str, 7, "%3d.%02d", in, fr); - 8001ff6: 6939 ldr r1, [r7, #16] - 8001ff8: 4a1f ldr r2, [pc, #124] ; (8002078 ) - 8001ffa: 4820 ldr r0, [pc, #128] ; (800207c ) - 8001ffc: 68fb ldr r3, [r7, #12] - 8001ffe: 9300 str r3, [sp, #0] - 8002000: 000b movs r3, r1 - 8002002: 2107 movs r1, #7 - 8002004: f00c ff2a bl 800ee5c - osMutexAcquire(mutScreenHandle, osWaitForever); - 8002008: 4b1d ldr r3, [pc, #116] ; (8002080 ) - 800200a: 681b ldr r3, [r3, #0] - 800200c: 2201 movs r2, #1 - 800200e: 4252 negs r2, r2 - 8002010: 0011 movs r1, r2 - 8002012: 0018 movs r0, r3 - 8002014: f009 fe63 bl 800bcde - ST7793_SetFontSize(1); - 8002018: 2001 movs r0, #1 - 800201a: f002 fa55 bl 80044c8 - ST7793_FillRect(Darkergray, 11, 180, 27, 192); - 800201e: 4819 ldr r0, [pc, #100] ; (8002084 ) - 8002020: 23c0 movs r3, #192 ; 0xc0 - 8002022: 9300 str r3, [sp, #0] - 8002024: 231b movs r3, #27 - 8002026: 22b4 movs r2, #180 ; 0xb4 - 8002028: 210b movs r1, #11 - 800202a: f002 f86d bl 8004108 - ST7793_DrawString(Black, Darkergray, str, 11, 180); - 800202e: 4a13 ldr r2, [pc, #76] ; (800207c ) - 8002030: 4914 ldr r1, [pc, #80] ; (8002084 ) - 8002032: 23b4 movs r3, #180 ; 0xb4 - 8002034: 9300 str r3, [sp, #0] - 8002036: 230b movs r3, #11 - 8002038: 2000 movs r0, #0 - 800203a: f002 fc67 bl 800490c - osMutexRelease(mutScreenHandle); - 800203e: 4b10 ldr r3, [pc, #64] ; (8002080 ) - 8002040: 681b ldr r3, [r3, #0] - 8002042: 0018 movs r0, r3 - 8002044: f009 fe9a bl 800bd7c - } - - osDelay(500); - 8002048: 23fa movs r3, #250 ; 0xfa - 800204a: 005b lsls r3, r3, #1 - 800204c: 0018 movs r0, r3 - 800204e: f009 fc9b bl 800b988 - res = 0; - 8002052: e739 b.n 8001ec8 - 8002054: 2000000c .word 0x2000000c - 8002058: 40400000 .word 0x40400000 - 800205c: 20000134 .word 0x20000134 - 8002060: 420c0000 .word 0x420c0000 - 8002064: 40012c00 .word 0x40012c00 - 8002068: 20000138 .word 0x20000138 - 800206c: 2000015c .word 0x2000015c - 8002070: 20000000 .word 0x20000000 - 8002074: 42c80000 .word 0x42c80000 - 8002078: 0800f6c8 .word 0x0800f6c8 - 800207c: 20000184 .word 0x20000184 - 8002080: 20000168 .word 0x20000168 - 8002084: 000039c7 .word 0x000039c7 - -08002088 : -* @param argument: Not used -* @retval None -*/ -/* USER CODE END Header_svc_touch */ -void svc_touch(void *argument) -{ - 8002088: b5b0 push {r4, r5, r7, lr} - 800208a: b088 sub sp, #32 - 800208c: af00 add r7, sp, #0 - 800208e: 60f8 str r0, [r7, #12] - /* USER CODE BEGIN svc_touch */ - /* Infinite loop */ - TouchPoint t; - uint16_t x = 0, y = 0; - 8002090: 231e movs r3, #30 - 8002092: 18fb adds r3, r7, r3 - 8002094: 2200 movs r2, #0 - 8002096: 801a strh r2, [r3, #0] - 8002098: 231c movs r3, #28 - 800209a: 18fb adds r3, r7, r3 - 800209c: 2200 movs r2, #0 - 800209e: 801a strh r2, [r3, #0] - for(;;) - { - osMutexAcquire(mutScreenHandle, osWaitForever); - 80020a0: 4b1f ldr r3, [pc, #124] ; (8002120 ) - 80020a2: 681b ldr r3, [r3, #0] - 80020a4: 2201 movs r2, #1 - 80020a6: 4252 negs r2, r2 - 80020a8: 0011 movs r1, r2 - 80020aa: 0018 movs r0, r3 - 80020ac: f009 fe17 bl 800bcde - //Protected Screen access code - t = ST7793_CheckTouch(); - 80020b0: 2514 movs r5, #20 - 80020b2: 197c adds r4, r7, r5 - 80020b4: 003b movs r3, r7 - 80020b6: 0018 movs r0, r3 - 80020b8: f003 fa7a bl 80055b0 - 80020bc: 003b movs r3, r7 - 80020be: 0020 movs r0, r4 - 80020c0: 0019 movs r1, r3 - 80020c2: 2306 movs r3, #6 - 80020c4: 001a movs r2, r3 - 80020c6: f00c fd99 bl 800ebfc - osMutexRelease(mutScreenHandle); - 80020ca: 4b15 ldr r3, [pc, #84] ; (8002120 ) - 80020cc: 681b ldr r3, [r3, #0] - 80020ce: 0018 movs r0, r3 - 80020d0: f009 fe54 bl 800bd7c - - if (t.z > ST7793_Z_THRESHOLD) { - 80020d4: 0029 movs r1, r5 - 80020d6: 187b adds r3, r7, r1 - 80020d8: 889b ldrh r3, [r3, #4] - 80020da: 2b0f cmp r3, #15 - 80020dc: d91c bls.n 8002118 - if ((t.x != x) && (t.y != y)) { //Check if it is a new point - 80020de: 187b adds r3, r7, r1 - 80020e0: 881b ldrh r3, [r3, #0] - 80020e2: 201e movs r0, #30 - 80020e4: 183a adds r2, r7, r0 - 80020e6: 8812 ldrh r2, [r2, #0] - 80020e8: 429a cmp r2, r3 - 80020ea: d015 beq.n 8002118 - 80020ec: 187b adds r3, r7, r1 - 80020ee: 885b ldrh r3, [r3, #2] - 80020f0: 241c movs r4, #28 - 80020f2: 193a adds r2, r7, r4 - 80020f4: 8812 ldrh r2, [r2, #0] - 80020f6: 429a cmp r2, r3 - 80020f8: d00e beq.n 8002118 - x = t.x; - 80020fa: 183b adds r3, r7, r0 - 80020fc: 187a adds r2, r7, r1 - 80020fe: 8812 ldrh r2, [r2, #0] - 8002100: 801a strh r2, [r3, #0] - y = t.y; - 8002102: 193b adds r3, r7, r4 - 8002104: 187a adds r2, r7, r1 - 8002106: 8852 ldrh r2, [r2, #2] - 8002108: 801a strh r2, [r3, #0] - osMessageQueuePut(newTouchHandle, &t, 0, 50); - 800210a: 4b06 ldr r3, [pc, #24] ; (8002124 ) - 800210c: 6818 ldr r0, [r3, #0] - 800210e: 1879 adds r1, r7, r1 - 8002110: 2332 movs r3, #50 ; 0x32 - 8002112: 2200 movs r2, #0 - 8002114: f009 feea bl 800beec - } - } - - osDelay(80); - 8002118: 2050 movs r0, #80 ; 0x50 - 800211a: f009 fc35 bl 800b988 - osMutexAcquire(mutScreenHandle, osWaitForever); - 800211e: e7bf b.n 80020a0 - 8002120: 20000168 .word 0x20000168 - 8002124: 20000160 .word 0x20000160 - -08002128 : - /* USER CODE END svc_touch */ -} - -/* clockTick function */ -void clockTick(void *argument) -{ - 8002128: b5f0 push {r4, r5, r6, r7, lr} - 800212a: b089 sub sp, #36 ; 0x24 - 800212c: af02 add r7, sp, #8 - 800212e: 6078 str r0, [r7, #4] - char str[8]; - uint16_t x, y; - static uint16_t stime, stemp; //starting time and temperature for a stage - static float dps; //degrees per second - - if (Temperature < 0.0f) { - 8002130: 4b43 ldr r3, [pc, #268] ; (8002240 ) - 8002132: 681b ldr r3, [r3, #0] - 8002134: 2100 movs r1, #0 - 8002136: 1c18 adds r0, r3, #0 - 8002138: f7fe f980 bl 800043c <__aeabi_fcmplt> - 800213c: 1e03 subs r3, r0, #0 - 800213e: d005 beq.n 800214c - osTimerStop(secTimerHandle); - 8002140: 4b40 ldr r3, [pc, #256] ; (8002244 ) - 8002142: 681b ldr r3, [r3, #0] - 8002144: 0018 movs r0, r3 - 8002146: f009 fd07 bl 800bb58 - return; - 800214a: e1ed b.n 8002528 - } - - if (Timer == 0) { - 800214c: 4b3e ldr r3, [pc, #248] ; (8002248 ) - 800214e: 881b ldrh r3, [r3, #0] - 8002150: 2b00 cmp r3, #0 - 8002152: d138 bne.n 80021c6 - stime = 0; - 8002154: 4b3d ldr r3, [pc, #244] ; (800224c ) - 8002156: 2200 movs r2, #0 - 8002158: 801a strh r2, [r3, #0] - stemp = 20; - 800215a: 4b3d ldr r3, [pc, #244] ; (8002250 ) - 800215c: 2214 movs r2, #20 - 800215e: 801a strh r2, [r3, #0] - dps = (presets[Preset].temperature[Stage] - stemp) / (float)(presets[Preset].time[Stage]); - 8002160: 4b3c ldr r3, [pc, #240] ; (8002254 ) - 8002162: 781b ldrb r3, [r3, #0] - 8002164: 0019 movs r1, r3 - 8002166: 4b3c ldr r3, [pc, #240] ; (8002258 ) - 8002168: 781b ldrb r3, [r3, #0] - 800216a: 0018 movs r0, r3 - 800216c: 4a3b ldr r2, [pc, #236] ; (800225c ) - 800216e: 000b movs r3, r1 - 8002170: 009b lsls r3, r3, #2 - 8002172: 185b adds r3, r3, r1 - 8002174: 009b lsls r3, r3, #2 - 8002176: 181b adds r3, r3, r0 - 8002178: 005b lsls r3, r3, #1 - 800217a: 5a9b ldrh r3, [r3, r2] - 800217c: 001a movs r2, r3 - 800217e: 4b34 ldr r3, [pc, #208] ; (8002250 ) - 8002180: 881b ldrh r3, [r3, #0] - 8002182: 1ad3 subs r3, r2, r3 - 8002184: 0018 movs r0, r3 - 8002186: f7fe fff3 bl 8001170 <__aeabi_i2f> - 800218a: 1c04 adds r4, r0, #0 - 800218c: 4b31 ldr r3, [pc, #196] ; (8002254 ) - 800218e: 781b ldrb r3, [r3, #0] - 8002190: 0019 movs r1, r3 - 8002192: 4b31 ldr r3, [pc, #196] ; (8002258 ) - 8002194: 781b ldrb r3, [r3, #0] - 8002196: 0018 movs r0, r3 - 8002198: 4a30 ldr r2, [pc, #192] ; (800225c ) - 800219a: 000b movs r3, r1 - 800219c: 009b lsls r3, r3, #2 - 800219e: 185b adds r3, r3, r1 - 80021a0: 009b lsls r3, r3, #2 - 80021a2: 181b adds r3, r3, r0 - 80021a4: 3304 adds r3, #4 - 80021a6: 005b lsls r3, r3, #1 - 80021a8: 18d3 adds r3, r2, r3 - 80021aa: 3302 adds r3, #2 - 80021ac: 881b ldrh r3, [r3, #0] - 80021ae: 0018 movs r0, r3 - 80021b0: f7ff f82c bl 800120c <__aeabi_ui2f> - 80021b4: 1c03 adds r3, r0, #0 - 80021b6: 1c19 adds r1, r3, #0 - 80021b8: 1c20 adds r0, r4, #0 - 80021ba: f7fe fb1d bl 80007f8 <__aeabi_fdiv> - 80021be: 1c03 adds r3, r0, #0 - 80021c0: 1c1a adds r2, r3, #0 - 80021c2: 4b27 ldr r3, [pc, #156] ; (8002260 ) - 80021c4: 601a str r2, [r3, #0] - } - - Timer++; - 80021c6: 4b20 ldr r3, [pc, #128] ; (8002248 ) - 80021c8: 881b ldrh r3, [r3, #0] - 80021ca: 3301 adds r3, #1 - 80021cc: b29a uxth r2, r3 - 80021ce: 4b1e ldr r3, [pc, #120] ; (8002248 ) - 80021d0: 801a strh r2, [r3, #0] - osMutexAcquire(mutScreenHandle, osWaitForever); - 80021d2: 4b24 ldr r3, [pc, #144] ; (8002264 ) - 80021d4: 681b ldr r3, [r3, #0] - 80021d6: 2201 movs r2, #1 - 80021d8: 4252 negs r2, r2 - 80021da: 0011 movs r1, r2 - 80021dc: 0018 movs r0, r3 - 80021de: f009 fd7e bl 800bcde - - if (Timer >= presets[Preset].time[4]) { - 80021e2: 4b1c ldr r3, [pc, #112] ; (8002254 ) - 80021e4: 781b ldrb r3, [r3, #0] - 80021e6: 0019 movs r1, r3 - 80021e8: 4a1c ldr r2, [pc, #112] ; (800225c ) - 80021ea: 000b movs r3, r1 - 80021ec: 009b lsls r3, r3, #2 - 80021ee: 185b adds r3, r3, r1 - 80021f0: 00db lsls r3, r3, #3 - 80021f2: 18d3 adds r3, r2, r3 - 80021f4: 3312 adds r3, #18 - 80021f6: 881a ldrh r2, [r3, #0] - 80021f8: 4b13 ldr r3, [pc, #76] ; (8002248 ) - 80021fa: 881b ldrh r3, [r3, #0] - 80021fc: 429a cmp r2, r3 - 80021fe: d839 bhi.n 8002274 - ST7793_FillRect(Darkergray, 290, 5, 322, 30); - 8002200: 23a1 movs r3, #161 ; 0xa1 - 8002202: 005b lsls r3, r3, #1 - 8002204: 2291 movs r2, #145 ; 0x91 - 8002206: 0051 lsls r1, r2, #1 - 8002208: 4817 ldr r0, [pc, #92] ; (8002268 ) - 800220a: 221e movs r2, #30 - 800220c: 9200 str r2, [sp, #0] - 800220e: 2205 movs r2, #5 - 8002210: f001 ff7a bl 8004108 - ST7793_SetFontSize(2); - 8002214: 2002 movs r0, #2 - 8002216: f002 f957 bl 80044c8 - ST7793_DrawStringC(Yellow, Darkergray, "Done!", 210, 5); - 800221a: 4a14 ldr r2, [pc, #80] ; (800226c ) - 800221c: 4912 ldr r1, [pc, #72] ; (8002268 ) - 800221e: 4814 ldr r0, [pc, #80] ; (8002270 ) - 8002220: 2305 movs r3, #5 - 8002222: 9300 str r3, [sp, #0] - 8002224: 23d2 movs r3, #210 ; 0xd2 - 8002226: f002 fbc1 bl 80049ac - osMutexRelease(mutScreenHandle); - 800222a: 4b0e ldr r3, [pc, #56] ; (8002264 ) - 800222c: 681b ldr r3, [r3, #0] - 800222e: 0018 movs r0, r3 - 8002230: f009 fda4 bl 800bd7c - osTimerStop(secTimerHandle); - 8002234: 4b03 ldr r3, [pc, #12] ; (8002244 ) - 8002236: 681b ldr r3, [r3, #0] - 8002238: 0018 movs r0, r3 - 800223a: f009 fc8d bl 800bb58 - return; - 800223e: e173 b.n 8002528 - 8002240: 20000138 .word 0x20000138 - 8002244: 20000164 .word 0x20000164 - 8002248: 2000014c .word 0x2000014c - 800224c: 20000190 .word 0x20000190 - 8002250: 20000192 .word 0x20000192 - 8002254: 20000134 .word 0x20000134 - 8002258: 20000140 .word 0x20000140 - 800225c: 0800fe9c .word 0x0800fe9c - 8002260: 20000194 .word 0x20000194 - 8002264: 20000168 .word 0x20000168 - 8002268: 000039c7 .word 0x000039c7 - 800226c: 0800f6d4 .word 0x0800f6d4 - 8002270: 0000ffe0 .word 0x0000ffe0 - } - - snprintf(str, 6, "%02d:%02d", Timer/60, Timer%60); - 8002274: 4bae ldr r3, [pc, #696] ; (8002530 ) - 8002276: 881b ldrh r3, [r3, #0] - 8002278: 213c movs r1, #60 ; 0x3c - 800227a: 0018 movs r0, r3 - 800227c: f7fd ff56 bl 800012c <__udivsi3> - 8002280: 0003 movs r3, r0 - 8002282: b29b uxth r3, r3 - 8002284: 001c movs r4, r3 - 8002286: 4baa ldr r3, [pc, #680] ; (8002530 ) - 8002288: 881b ldrh r3, [r3, #0] - 800228a: 213c movs r1, #60 ; 0x3c - 800228c: 0018 movs r0, r3 - 800228e: f7fd ffd3 bl 8000238 <__aeabi_uidivmod> - 8002292: 000b movs r3, r1 - 8002294: b29b uxth r3, r3 - 8002296: 4aa7 ldr r2, [pc, #668] ; (8002534 ) - 8002298: 250c movs r5, #12 - 800229a: 1978 adds r0, r7, r5 - 800229c: 9300 str r3, [sp, #0] - 800229e: 0023 movs r3, r4 - 80022a0: 2106 movs r1, #6 - 80022a2: f00c fddb bl 800ee5c - ST7793_SetFontSize(2); - 80022a6: 2002 movs r0, #2 - 80022a8: f002 f90e bl 80044c8 - ST7793_DrawString(Cyan, Darkergray, str, 106, 208); - 80022ac: 197a adds r2, r7, r5 - 80022ae: 49a2 ldr r1, [pc, #648] ; (8002538 ) - 80022b0: 48a2 ldr r0, [pc, #648] ; (800253c ) - 80022b2: 23d0 movs r3, #208 ; 0xd0 - 80022b4: 9300 str r3, [sp, #0] - 80022b6: 236a movs r3, #106 ; 0x6a - 80022b8: f002 fb28 bl 800490c - //Draw a dot only if temperature is higher than the bottom of the graph - if (Temperature >= 20.0f) { - 80022bc: 4ba0 ldr r3, [pc, #640] ; (8002540 ) - 80022be: 681b ldr r3, [r3, #0] - 80022c0: 49a0 ldr r1, [pc, #640] ; (8002544 ) - 80022c2: 1c18 adds r0, r3, #0 - 80022c4: f7fe f8d8 bl 8000478 <__aeabi_fcmpge> - 80022c8: 1e03 subs r3, r0, #0 - 80022ca: d047 beq.n 800235c - x = GRAPH_X1+Timer/spp; - 80022cc: 4b98 ldr r3, [pc, #608] ; (8002530 ) - 80022ce: 881b ldrh r3, [r3, #0] - 80022d0: 0018 movs r0, r3 - 80022d2: f7fe ff4d bl 8001170 <__aeabi_i2f> - 80022d6: 1c02 adds r2, r0, #0 - 80022d8: 4b9b ldr r3, [pc, #620] ; (8002548 ) - 80022da: 681b ldr r3, [r3, #0] - 80022dc: 1c19 adds r1, r3, #0 - 80022de: 1c10 adds r0, r2, #0 - 80022e0: f7fe fa8a bl 80007f8 <__aeabi_fdiv> - 80022e4: 1c03 adds r3, r0, #0 - 80022e6: 4999 ldr r1, [pc, #612] ; (800254c ) - 80022e8: 1c18 adds r0, r3, #0 - 80022ea: f7fe f8e7 bl 80004bc <__aeabi_fadd> - 80022ee: 1c03 adds r3, r0, #0 - 80022f0: 2516 movs r5, #22 - 80022f2: 197c adds r4, r7, r5 - 80022f4: 1c18 adds r0, r3, #0 - 80022f6: f7fe f8c9 bl 800048c <__aeabi_f2uiz> - 80022fa: 0003 movs r3, r0 - 80022fc: 8023 strh r3, [r4, #0] - y = GRAPH_Y+GRAPH_H-(Temperature-20)/dpp; - 80022fe: 4b90 ldr r3, [pc, #576] ; (8002540 ) - 8002300: 681b ldr r3, [r3, #0] - 8002302: 4990 ldr r1, [pc, #576] ; (8002544 ) - 8002304: 1c18 adds r0, r3, #0 - 8002306: f7fe fd65 bl 8000dd4 <__aeabi_fsub> - 800230a: 1c03 adds r3, r0, #0 - 800230c: 1c1a adds r2, r3, #0 - 800230e: 4b90 ldr r3, [pc, #576] ; (8002550 ) - 8002310: 681b ldr r3, [r3, #0] - 8002312: 1c19 adds r1, r3, #0 - 8002314: 1c10 adds r0, r2, #0 - 8002316: f7fe fa6f bl 80007f8 <__aeabi_fdiv> - 800231a: 1c03 adds r3, r0, #0 - 800231c: 1c19 adds r1, r3, #0 - 800231e: 488d ldr r0, [pc, #564] ; (8002554 ) - 8002320: f7fe fd58 bl 8000dd4 <__aeabi_fsub> - 8002324: 1c03 adds r3, r0, #0 - 8002326: 2614 movs r6, #20 - 8002328: 19bc adds r4, r7, r6 - 800232a: 1c18 adds r0, r3, #0 - 800232c: f7fe f8ae bl 800048c <__aeabi_f2uiz> - 8002330: 0003 movs r3, r0 - 8002332: 8023 strh r3, [r4, #0] - ST7793_FillRect(Red, x, y, x+1, y-1); //4-pixel dot - 8002334: 0029 movs r1, r5 - 8002336: 187b adds r3, r7, r1 - 8002338: 881b ldrh r3, [r3, #0] - 800233a: 3301 adds r3, #1 - 800233c: b29d uxth r5, r3 - 800233e: 19bb adds r3, r7, r6 - 8002340: 881b ldrh r3, [r3, #0] - 8002342: 3b01 subs r3, #1 - 8002344: b29b uxth r3, r3 - 8002346: 19ba adds r2, r7, r6 - 8002348: 8814 ldrh r4, [r2, #0] - 800234a: 187a adds r2, r7, r1 - 800234c: 8811 ldrh r1, [r2, #0] - 800234e: 22f8 movs r2, #248 ; 0xf8 - 8002350: 0210 lsls r0, r2, #8 - 8002352: 9300 str r3, [sp, #0] - 8002354: 002b movs r3, r5 - 8002356: 0022 movs r2, r4 - 8002358: f001 fed6 bl 8004108 - } - - //Check if we have a new stage started - if (Timer == presets[Preset].time[Stage]) { - 800235c: 4b7e ldr r3, [pc, #504] ; (8002558 ) - 800235e: 781b ldrb r3, [r3, #0] - 8002360: 0019 movs r1, r3 - 8002362: 4b7e ldr r3, [pc, #504] ; (800255c ) - 8002364: 781b ldrb r3, [r3, #0] - 8002366: 0018 movs r0, r3 - 8002368: 4a7d ldr r2, [pc, #500] ; (8002560 ) - 800236a: 000b movs r3, r1 - 800236c: 009b lsls r3, r3, #2 - 800236e: 185b adds r3, r3, r1 - 8002370: 009b lsls r3, r3, #2 - 8002372: 181b adds r3, r3, r0 - 8002374: 3304 adds r3, #4 - 8002376: 005b lsls r3, r3, #1 - 8002378: 18d3 adds r3, r2, r3 - 800237a: 3302 adds r3, #2 - 800237c: 881a ldrh r2, [r3, #0] - 800237e: 4b6c ldr r3, [pc, #432] ; (8002530 ) - 8002380: 881b ldrh r3, [r3, #0] - 8002382: 429a cmp r2, r3 - 8002384: d178 bne.n 8002478 - Stage++; - 8002386: 4b75 ldr r3, [pc, #468] ; (800255c ) - 8002388: 781b ldrb r3, [r3, #0] - 800238a: 3301 adds r3, #1 - 800238c: b2da uxtb r2, r3 - 800238e: 4b73 ldr r3, [pc, #460] ; (800255c ) - 8002390: 701a strb r2, [r3, #0] - ST7793_FillRect(Darkergray, 274, 5, 322, 30); - 8002392: 23a1 movs r3, #161 ; 0xa1 - 8002394: 005b lsls r3, r3, #1 - 8002396: 2289 movs r2, #137 ; 0x89 - 8002398: 0051 lsls r1, r2, #1 - 800239a: 4867 ldr r0, [pc, #412] ; (8002538 ) - 800239c: 221e movs r2, #30 - 800239e: 9200 str r2, [sp, #0] - 80023a0: 2205 movs r2, #5 - 80023a2: f001 feb1 bl 8004108 - ST7793_SetFontSize(2); - 80023a6: 2002 movs r0, #2 - 80023a8: f002 f88e bl 80044c8 - ST7793_DrawStringC(Yellow, Darkergray, stageNames[Stage], 210, 5); - 80023ac: 4b6b ldr r3, [pc, #428] ; (800255c ) - 80023ae: 781b ldrb r3, [r3, #0] - 80023b0: 00da lsls r2, r3, #3 - 80023b2: 4b6c ldr r3, [pc, #432] ; (8002564 ) - 80023b4: 18d2 adds r2, r2, r3 - 80023b6: 4960 ldr r1, [pc, #384] ; (8002538 ) - 80023b8: 486b ldr r0, [pc, #428] ; (8002568 ) - 80023ba: 2305 movs r3, #5 - 80023bc: 9300 str r3, [sp, #0] - 80023be: 23d2 movs r3, #210 ; 0xd2 - 80023c0: f002 faf4 bl 80049ac - stime = presets[Preset].time[Stage-1]; - 80023c4: 4b64 ldr r3, [pc, #400] ; (8002558 ) - 80023c6: 781b ldrb r3, [r3, #0] - 80023c8: 0018 movs r0, r3 - 80023ca: 4b64 ldr r3, [pc, #400] ; (800255c ) - 80023cc: 781b ldrb r3, [r3, #0] - 80023ce: 1e59 subs r1, r3, #1 - 80023d0: 4a63 ldr r2, [pc, #396] ; (8002560 ) - 80023d2: 0003 movs r3, r0 - 80023d4: 009b lsls r3, r3, #2 - 80023d6: 181b adds r3, r3, r0 - 80023d8: 009b lsls r3, r3, #2 - 80023da: 185b adds r3, r3, r1 - 80023dc: 3304 adds r3, #4 - 80023de: 005b lsls r3, r3, #1 - 80023e0: 18d3 adds r3, r2, r3 - 80023e2: 3302 adds r3, #2 - 80023e4: 881a ldrh r2, [r3, #0] - 80023e6: 4b61 ldr r3, [pc, #388] ; (800256c ) - 80023e8: 801a strh r2, [r3, #0] - stemp = presets[Preset].temperature[Stage-1]; - 80023ea: 4b5b ldr r3, [pc, #364] ; (8002558 ) - 80023ec: 781b ldrb r3, [r3, #0] - 80023ee: 0018 movs r0, r3 - 80023f0: 4b5a ldr r3, [pc, #360] ; (800255c ) - 80023f2: 781b ldrb r3, [r3, #0] - 80023f4: 1e59 subs r1, r3, #1 - 80023f6: 4a5a ldr r2, [pc, #360] ; (8002560 ) - 80023f8: 0003 movs r3, r0 - 80023fa: 009b lsls r3, r3, #2 - 80023fc: 181b adds r3, r3, r0 - 80023fe: 009b lsls r3, r3, #2 - 8002400: 185b adds r3, r3, r1 - 8002402: 005b lsls r3, r3, #1 - 8002404: 5a9a ldrh r2, [r3, r2] - 8002406: 4b5a ldr r3, [pc, #360] ; (8002570 ) - 8002408: 801a strh r2, [r3, #0] - dps = (presets[Preset].temperature[Stage] - stemp) / (float)(presets[Preset].time[Stage] - stime); - 800240a: 4b53 ldr r3, [pc, #332] ; (8002558 ) - 800240c: 781b ldrb r3, [r3, #0] - 800240e: 0019 movs r1, r3 - 8002410: 4b52 ldr r3, [pc, #328] ; (800255c ) - 8002412: 781b ldrb r3, [r3, #0] - 8002414: 0018 movs r0, r3 - 8002416: 4a52 ldr r2, [pc, #328] ; (8002560 ) - 8002418: 000b movs r3, r1 - 800241a: 009b lsls r3, r3, #2 - 800241c: 185b adds r3, r3, r1 - 800241e: 009b lsls r3, r3, #2 - 8002420: 181b adds r3, r3, r0 - 8002422: 005b lsls r3, r3, #1 - 8002424: 5a9b ldrh r3, [r3, r2] - 8002426: 001a movs r2, r3 - 8002428: 4b51 ldr r3, [pc, #324] ; (8002570 ) - 800242a: 881b ldrh r3, [r3, #0] - 800242c: 1ad3 subs r3, r2, r3 - 800242e: 0018 movs r0, r3 - 8002430: f7fe fe9e bl 8001170 <__aeabi_i2f> - 8002434: 1c04 adds r4, r0, #0 - 8002436: 4b48 ldr r3, [pc, #288] ; (8002558 ) - 8002438: 781b ldrb r3, [r3, #0] - 800243a: 0019 movs r1, r3 - 800243c: 4b47 ldr r3, [pc, #284] ; (800255c ) - 800243e: 781b ldrb r3, [r3, #0] - 8002440: 0018 movs r0, r3 - 8002442: 4a47 ldr r2, [pc, #284] ; (8002560 ) - 8002444: 000b movs r3, r1 - 8002446: 009b lsls r3, r3, #2 - 8002448: 185b adds r3, r3, r1 - 800244a: 009b lsls r3, r3, #2 - 800244c: 181b adds r3, r3, r0 - 800244e: 3304 adds r3, #4 - 8002450: 005b lsls r3, r3, #1 - 8002452: 18d3 adds r3, r2, r3 - 8002454: 3302 adds r3, #2 - 8002456: 881b ldrh r3, [r3, #0] - 8002458: 001a movs r2, r3 - 800245a: 4b44 ldr r3, [pc, #272] ; (800256c ) - 800245c: 881b ldrh r3, [r3, #0] - 800245e: 1ad3 subs r3, r2, r3 - 8002460: 0018 movs r0, r3 - 8002462: f7fe fe85 bl 8001170 <__aeabi_i2f> - 8002466: 1c03 adds r3, r0, #0 - 8002468: 1c19 adds r1, r3, #0 - 800246a: 1c20 adds r0, r4, #0 - 800246c: f7fe f9c4 bl 80007f8 <__aeabi_fdiv> - 8002470: 1c03 adds r3, r0, #0 - 8002472: 1c1a adds r2, r3, #0 - 8002474: 4b3f ldr r3, [pc, #252] ; (8002574 ) - 8002476: 601a str r2, [r3, #0] - } - - //Calculate new aim temperature - aimTemperature = (Timer - stime) * dps + stemp; - 8002478: 4b2d ldr r3, [pc, #180] ; (8002530 ) - 800247a: 881b ldrh r3, [r3, #0] - 800247c: 001a movs r2, r3 - 800247e: 4b3b ldr r3, [pc, #236] ; (800256c ) - 8002480: 881b ldrh r3, [r3, #0] - 8002482: 1ad3 subs r3, r2, r3 - 8002484: 0018 movs r0, r3 - 8002486: f7fe fe73 bl 8001170 <__aeabi_i2f> - 800248a: 1c02 adds r2, r0, #0 - 800248c: 4b39 ldr r3, [pc, #228] ; (8002574 ) - 800248e: 681b ldr r3, [r3, #0] - 8002490: 1c19 adds r1, r3, #0 - 8002492: 1c10 adds r0, r2, #0 - 8002494: f7fe fb78 bl 8000b88 <__aeabi_fmul> - 8002498: 1c03 adds r3, r0, #0 - 800249a: 1c1c adds r4, r3, #0 - 800249c: 4b34 ldr r3, [pc, #208] ; (8002570 ) - 800249e: 881b ldrh r3, [r3, #0] - 80024a0: 0018 movs r0, r3 - 80024a2: f7fe fe65 bl 8001170 <__aeabi_i2f> - 80024a6: 1c03 adds r3, r0, #0 - 80024a8: 1c19 adds r1, r3, #0 - 80024aa: 1c20 adds r0, r4, #0 - 80024ac: f7fe f806 bl 80004bc <__aeabi_fadd> - 80024b0: 1c03 adds r3, r0, #0 - 80024b2: 1c1a adds r2, r3, #0 - 80024b4: 4b30 ldr r3, [pc, #192] ; (8002578 ) - 80024b6: 601a str r2, [r3, #0] - snprintf(str, 8, "%3d.%02d", (int)aimTemperature, (int)((aimTemperature - (int)aimTemperature)*100)); - 80024b8: 4b2f ldr r3, [pc, #188] ; (8002578 ) - 80024ba: 681b ldr r3, [r3, #0] - 80024bc: 1c18 adds r0, r3, #0 - 80024be: f7fe fe37 bl 8001130 <__aeabi_f2iz> - 80024c2: 0005 movs r5, r0 - 80024c4: 4b2c ldr r3, [pc, #176] ; (8002578 ) - 80024c6: 681c ldr r4, [r3, #0] - 80024c8: 4b2b ldr r3, [pc, #172] ; (8002578 ) - 80024ca: 681b ldr r3, [r3, #0] - 80024cc: 1c18 adds r0, r3, #0 - 80024ce: f7fe fe2f bl 8001130 <__aeabi_f2iz> - 80024d2: 0003 movs r3, r0 - 80024d4: 0018 movs r0, r3 - 80024d6: f7fe fe4b bl 8001170 <__aeabi_i2f> - 80024da: 1c03 adds r3, r0, #0 - 80024dc: 1c19 adds r1, r3, #0 - 80024de: 1c20 adds r0, r4, #0 - 80024e0: f7fe fc78 bl 8000dd4 <__aeabi_fsub> - 80024e4: 1c03 adds r3, r0, #0 - 80024e6: 4925 ldr r1, [pc, #148] ; (800257c ) - 80024e8: 1c18 adds r0, r3, #0 - 80024ea: f7fe fb4d bl 8000b88 <__aeabi_fmul> - 80024ee: 1c03 adds r3, r0, #0 - 80024f0: 1c18 adds r0, r3, #0 - 80024f2: f7fe fe1d bl 8001130 <__aeabi_f2iz> - 80024f6: 0003 movs r3, r0 - 80024f8: 4a21 ldr r2, [pc, #132] ; (8002580 ) - 80024fa: 240c movs r4, #12 - 80024fc: 1938 adds r0, r7, r4 - 80024fe: 9300 str r3, [sp, #0] - 8002500: 002b movs r3, r5 - 8002502: 2108 movs r1, #8 - 8002504: f00c fcaa bl 800ee5c - ST7793_SetFontSize(1); - 8002508: 2001 movs r0, #1 - 800250a: f001 ffdd bl 80044c8 - ST7793_DrawString(Black, Darkergray, str, 10, 140); - 800250e: 193a adds r2, r7, r4 - 8002510: 4909 ldr r1, [pc, #36] ; (8002538 ) - 8002512: 238c movs r3, #140 ; 0x8c - 8002514: 9300 str r3, [sp, #0] - 8002516: 230a movs r3, #10 - 8002518: 2000 movs r0, #0 - 800251a: f002 f9f7 bl 800490c - - osMutexRelease(mutScreenHandle); - 800251e: 4b19 ldr r3, [pc, #100] ; (8002584 ) - 8002520: 681b ldr r3, [r3, #0] - 8002522: 0018 movs r0, r3 - 8002524: f009 fc2a bl 800bd7c - /* USER CODE END clockTick */ -} - 8002528: 46bd mov sp, r7 - 800252a: b007 add sp, #28 - 800252c: bdf0 pop {r4, r5, r6, r7, pc} - 800252e: 46c0 nop ; (mov r8, r8) - 8002530: 2000014c .word 0x2000014c - 8002534: 0800f6dc .word 0x0800f6dc - 8002538: 000039c7 .word 0x000039c7 - 800253c: 000007ff .word 0x000007ff - 8002540: 20000138 .word 0x20000138 - 8002544: 41a00000 .word 0x41a00000 - 8002548: 20000144 .word 0x20000144 - 800254c: 428c0000 .word 0x428c0000 - 8002550: 20000148 .word 0x20000148 - 8002554: 43480000 .word 0x43480000 - 8002558: 20000134 .word 0x20000134 - 800255c: 20000140 .word 0x20000140 - 8002560: 0800fe9c .word 0x0800fe9c - 8002564: 0800fe74 .word 0x0800fe74 - 8002568: 0000ffe0 .word 0x0000ffe0 - 800256c: 20000190 .word 0x20000190 - 8002570: 20000192 .word 0x20000192 - 8002574: 20000194 .word 0x20000194 - 8002578: 2000013c .word 0x2000013c - 800257c: 42c80000 .word 0x42c80000 - 8002580: 0800f6c8 .word 0x0800f6c8 - 8002584: 20000168 .word 0x20000168 - -08002588 : - -/* Private application code --------------------------------------------------*/ -/* USER CODE BEGIN Application */ -char str[10] = {0}; -uint16_t lvl = 989; -void btnPressed(uint8_t id) { - 8002588: b580 push {r7, lr} - 800258a: b082 sub sp, #8 - 800258c: af00 add r7, sp, #0 - 800258e: 0002 movs r2, r0 - 8002590: 1dfb adds r3, r7, #7 - 8002592: 701a strb r2, [r3, #0] - - switch (id) { - 8002594: 1dfb adds r3, r7, #7 - 8002596: 781b ldrb r3, [r3, #0] - 8002598: 2b07 cmp r3, #7 - 800259a: d900 bls.n 800259e - 800259c: e072 b.n 8002684 - 800259e: 009a lsls r2, r3, #2 - 80025a0: 4b3a ldr r3, [pc, #232] ; (800268c ) - 80025a2: 18d3 adds r3, r2, r3 - 80025a4: 681b ldr r3, [r3, #0] - 80025a6: 469f mov pc, r3 - case BTN_PRE1: // PRE1 - PID_Init(&pid); - 80025a8: 4b39 ldr r3, [pc, #228] ; (8002690 ) - 80025aa: 0018 movs r0, r3 - 80025ac: f001 f942 bl 8003834 - TIM1->CCR2 = 1020; - 80025b0: 4b38 ldr r3, [pc, #224] ; (8002694 ) - 80025b2: 22ff movs r2, #255 ; 0xff - 80025b4: 0092 lsls r2, r2, #2 - 80025b6: 639a str r2, [r3, #56] ; 0x38 - ST7793_Brightness(99); - 80025b8: 2063 movs r0, #99 ; 0x63 - 80025ba: f001 fd23 bl 8004004 - break; - 80025be: e061 b.n 8002684 - case BTN_PRE2: // PRE2 - lvl -= 50; - 80025c0: 4b35 ldr r3, [pc, #212] ; (8002698 ) - 80025c2: 881b ldrh r3, [r3, #0] - 80025c4: 3b32 subs r3, #50 ; 0x32 - 80025c6: b29a uxth r2, r3 - 80025c8: 4b33 ldr r3, [pc, #204] ; (8002698 ) - 80025ca: 801a strh r2, [r3, #0] - if (lvl < 60) lvl = 989; - 80025cc: 4b32 ldr r3, [pc, #200] ; (8002698 ) - 80025ce: 881b ldrh r3, [r3, #0] - 80025d0: 2b3b cmp r3, #59 ; 0x3b - 80025d2: d802 bhi.n 80025da - 80025d4: 4b30 ldr r3, [pc, #192] ; (8002698 ) - 80025d6: 4a31 ldr r2, [pc, #196] ; (800269c ) - 80025d8: 801a strh r2, [r3, #0] - TIM1->ARR = lvl+10; - 80025da: 4b2f ldr r3, [pc, #188] ; (8002698 ) - 80025dc: 881b ldrh r3, [r3, #0] - 80025de: 330a adds r3, #10 - 80025e0: 001a movs r2, r3 - 80025e2: 4b2c ldr r3, [pc, #176] ; (8002694 ) - 80025e4: 62da str r2, [r3, #44] ; 0x2c - TIM1->CCR2 = lvl; - 80025e6: 4b2c ldr r3, [pc, #176] ; (8002698 ) - 80025e8: 881a ldrh r2, [r3, #0] - 80025ea: 4b2a ldr r3, [pc, #168] ; (8002694 ) - 80025ec: 639a str r2, [r3, #56] ; 0x38 - //htim1.Instance->EGR |= 1; - - updateTInfo(); - 80025ee: f000 f85f bl 80026b0 - ST7793_Brightness(75); - 80025f2: 204b movs r0, #75 ; 0x4b - 80025f4: f001 fd06 bl 8004004 - break; - 80025f8: e044 b.n 8002684 - case BTN_PRE3: // PRE3 - PID_Init(&pid); - 80025fa: 4b25 ldr r3, [pc, #148] ; (8002690 ) - 80025fc: 0018 movs r0, r3 - 80025fe: f001 f919 bl 8003834 - - ST7793_Brightness(50); - 8002602: 2032 movs r0, #50 ; 0x32 - 8002604: f001 fcfe bl 8004004 - break; - 8002608: e03c b.n 8002684 - case BTN_PRE4: // PRE4 - lvl += 50; - 800260a: 4b23 ldr r3, [pc, #140] ; (8002698 ) - 800260c: 881b ldrh r3, [r3, #0] - 800260e: 3332 adds r3, #50 ; 0x32 - 8002610: b29a uxth r2, r3 - 8002612: 4b21 ldr r3, [pc, #132] ; (8002698 ) - 8002614: 801a strh r2, [r3, #0] - if (lvl > 930) lvl = 60; - 8002616: 4b20 ldr r3, [pc, #128] ; (8002698 ) - 8002618: 881b ldrh r3, [r3, #0] - 800261a: 4a21 ldr r2, [pc, #132] ; (80026a0 ) - 800261c: 4293 cmp r3, r2 - 800261e: d902 bls.n 8002626 - 8002620: 4b1d ldr r3, [pc, #116] ; (8002698 ) - 8002622: 223c movs r2, #60 ; 0x3c - 8002624: 801a strh r2, [r3, #0] - TIM1->ARR = lvl+10; - 8002626: 4b1c ldr r3, [pc, #112] ; (8002698 ) - 8002628: 881b ldrh r3, [r3, #0] - 800262a: 330a adds r3, #10 - 800262c: 001a movs r2, r3 - 800262e: 4b19 ldr r3, [pc, #100] ; (8002694 ) - 8002630: 62da str r2, [r3, #44] ; 0x2c - TIM1->CCR2 = lvl; - 8002632: 4b19 ldr r3, [pc, #100] ; (8002698 ) - 8002634: 881a ldrh r2, [r3, #0] - 8002636: 4b17 ldr r3, [pc, #92] ; (8002694 ) - 8002638: 639a str r2, [r3, #56] ; 0x38 - updateTInfo(); - 800263a: f000 f839 bl 80026b0 - ST7793_Brightness(25); - 800263e: 2019 movs r0, #25 - 8002640: f001 fce0 bl 8004004 - break; - 8002644: e01e b.n 8002684 - case BTN_START: // START - Timer = 0; - 8002646: 4b17 ldr r3, [pc, #92] ; (80026a4 ) - 8002648: 2200 movs r2, #0 - 800264a: 801a strh r2, [r3, #0] - Stage = 0; - 800264c: 4b16 ldr r3, [pc, #88] ; (80026a8 ) - 800264e: 2200 movs r2, #0 - 8002650: 701a strb r2, [r3, #0] - drawRunningScreen(); - 8002652: f000 f995 bl 8002980 - osTimerStart(secTimerHandle, 1000); - 8002656: 4b15 ldr r3, [pc, #84] ; (80026ac ) - 8002658: 681b ldr r3, [r3, #0] - 800265a: 22fa movs r2, #250 ; 0xfa - 800265c: 0092 lsls r2, r2, #2 - 800265e: 0011 movs r1, r2 - 8002660: 0018 movs r0, r3 - 8002662: f009 fa4b bl 800bafc - break; - 8002666: e00d b.n 8002684 - case BTN_COG: // COG (Settings) -// drawBootScreen(); -// osDelay(10000); -// drawMainScreen(); - drawSettingsScreen(); - 8002668: f000 f9e0 bl 8002a2c - break; - 800266c: e00a b.n 8002684 - case BTN_STOP: - osTimerStop(secTimerHandle); - 800266e: 4b0f ldr r3, [pc, #60] ; (80026ac ) - 8002670: 681b ldr r3, [r3, #0] - 8002672: 0018 movs r0, r3 - 8002674: f009 fa70 bl 800bb58 - drawMainScreen(); - 8002678: f000 f8b8 bl 80027ec - break; - 800267c: e002 b.n 8002684 - case BTN_OK: - drawMainScreen(); - 800267e: f000 f8b5 bl 80027ec - break; - 8002682: 46c0 nop ; (mov r8, r8) - } -} - 8002684: 46c0 nop ; (mov r8, r8) - 8002686: 46bd mov sp, r7 - 8002688: b002 add sp, #8 - 800268a: bd80 pop {r7, pc} - 800268c: 0800fff8 .word 0x0800fff8 - 8002690: 2000000c .word 0x2000000c - 8002694: 40012c00 .word 0x40012c00 - 8002698: 2000003c .word 0x2000003c - 800269c: 000003dd .word 0x000003dd - 80026a0: 000003a2 .word 0x000003a2 - 80026a4: 2000014c .word 0x2000014c - 80026a8: 20000140 .word 0x20000140 - 80026ac: 20000164 .word 0x20000164 - -080026b0 : - -void updateTInfo(void) { - 80026b0: b580 push {r7, lr} - 80026b2: b082 sub sp, #8 - 80026b4: af02 add r7, sp, #8 - osMutexAcquire(mutScreenHandle, osWaitForever); - 80026b6: 4b15 ldr r3, [pc, #84] ; (800270c ) - 80026b8: 681b ldr r3, [r3, #0] - 80026ba: 2201 movs r2, #1 - 80026bc: 4252 negs r2, r2 - 80026be: 0011 movs r1, r2 - 80026c0: 0018 movs r0, r3 - 80026c2: f009 fb0c bl 800bcde - ST7793_SetFontSize(1); - 80026c6: 2001 movs r0, #1 - 80026c8: f001 fefe bl 80044c8 - snprintf(str, 8, "T:%d", lvl); - 80026cc: 4b10 ldr r3, [pc, #64] ; (8002710 ) - 80026ce: 881b ldrh r3, [r3, #0] - 80026d0: 4a10 ldr r2, [pc, #64] ; (8002714 ) - 80026d2: 4811 ldr r0, [pc, #68] ; (8002718 ) - 80026d4: 2108 movs r1, #8 - 80026d6: f00c fbc1 bl 800ee5c - ST7793_FillRect(Lightgray, 205, 40, 270, 55); - 80026da: 2387 movs r3, #135 ; 0x87 - 80026dc: 005b lsls r3, r3, #1 - 80026de: 480f ldr r0, [pc, #60] ; (800271c ) - 80026e0: 2237 movs r2, #55 ; 0x37 - 80026e2: 9200 str r2, [sp, #0] - 80026e4: 2228 movs r2, #40 ; 0x28 - 80026e6: 21cd movs r1, #205 ; 0xcd - 80026e8: f001 fd0e bl 8004108 - ST7793_DrawString(Black, Lightgray, str, 205, 40); - 80026ec: 4a0a ldr r2, [pc, #40] ; (8002718 ) - 80026ee: 490b ldr r1, [pc, #44] ; (800271c ) - 80026f0: 2328 movs r3, #40 ; 0x28 - 80026f2: 9300 str r3, [sp, #0] - 80026f4: 23cd movs r3, #205 ; 0xcd - 80026f6: 2000 movs r0, #0 - 80026f8: f002 f908 bl 800490c - osMutexRelease(mutScreenHandle); - 80026fc: 4b03 ldr r3, [pc, #12] ; (800270c ) - 80026fe: 681b ldr r3, [r3, #0] - 8002700: 0018 movs r0, r3 - 8002702: f009 fb3b bl 800bd7c -} - 8002706: 46c0 nop ; (mov r8, r8) - 8002708: 46bd mov sp, r7 - 800270a: bd80 pop {r7, pc} - 800270c: 20000168 .word 0x20000168 - 8002710: 2000003c .word 0x2000003c - 8002714: 0800f6e8 .word 0x0800f6e8 - 8002718: 2000016c .word 0x2000016c - 800271c: 0000d69a .word 0x0000d69a - -08002720 : - -//Draw boot screen -void drawBootScreen(void) { - 8002720: b580 push {r7, lr} - 8002722: b082 sub sp, #8 - 8002724: af02 add r7, sp, #8 - Screen = SCR_BOOT; - 8002726: 4b28 ldr r3, [pc, #160] ; (80027c8 ) - 8002728: 2263 movs r2, #99 ; 0x63 - 800272a: 701a strb r2, [r3, #0] - osMutexAcquire(mutScreenHandle, osWaitForever); - 800272c: 4b27 ldr r3, [pc, #156] ; (80027cc ) - 800272e: 681b ldr r3, [r3, #0] - 8002730: 2201 movs r2, #1 - 8002732: 4252 negs r2, r2 - 8002734: 0011 movs r1, r2 - 8002736: 0018 movs r0, r3 - 8002738: f009 fad1 bl 800bcde - ST7793_FillScreen(Black); - 800273c: 2000 movs r0, #0 - 800273e: f001 fc71 bl 8004024 - ST7793_Draw1bBitmap(White, Black, 152, 91, logo_96x58); - 8002742: 4823 ldr r0, [pc, #140] ; (80027d0 ) - 8002744: 4b23 ldr r3, [pc, #140] ; (80027d4 ) - 8002746: 9300 str r3, [sp, #0] - 8002748: 235b movs r3, #91 ; 0x5b - 800274a: 2298 movs r2, #152 ; 0x98 - 800274c: 2100 movs r1, #0 - 800274e: f002 fcc3 bl 80050d8 - ST7793_SetFontSize(2); - 8002752: 2002 movs r0, #2 - 8002754: f001 feb8 bl 80044c8 - ST7793_DrawString(White, Black, "PCB Heater", 120, 60); - 8002758: 4a1f ldr r2, [pc, #124] ; (80027d8 ) - 800275a: 481d ldr r0, [pc, #116] ; (80027d0 ) - 800275c: 233c movs r3, #60 ; 0x3c - 800275e: 9300 str r3, [sp, #0] - 8002760: 2378 movs r3, #120 ; 0x78 - 8002762: 2100 movs r1, #0 - 8002764: f002 f8d2 bl 800490c - ST7793_DrawString(White, Black, "Reflow station", 88, 155); - 8002768: 4a1c ldr r2, [pc, #112] ; (80027dc ) - 800276a: 4819 ldr r0, [pc, #100] ; (80027d0 ) - 800276c: 239b movs r3, #155 ; 0x9b - 800276e: 9300 str r3, [sp, #0] - 8002770: 2358 movs r3, #88 ; 0x58 - 8002772: 2100 movs r1, #0 - 8002774: f002 f8ca bl 800490c - ST7793_SetFontSize(1); - 8002778: 2001 movs r0, #1 - 800277a: f001 fea5 bl 80044c8 - ST7793_DrawString(Green1, Black, "Firmware", 10, 220); - 800277e: 4a18 ldr r2, [pc, #96] ; (80027e0 ) - 8002780: 23e0 movs r3, #224 ; 0xe0 - 8002782: 00d8 lsls r0, r3, #3 - 8002784: 23dc movs r3, #220 ; 0xdc - 8002786: 9300 str r3, [sp, #0] - 8002788: 230a movs r3, #10 - 800278a: 2100 movs r1, #0 - 800278c: f002 f8be bl 800490c - ST7793_DrawStringC(Green1, Black, Version, 82, 220); - 8002790: 4a14 ldr r2, [pc, #80] ; (80027e4 ) - 8002792: 23e0 movs r3, #224 ; 0xe0 - 8002794: 00d8 lsls r0, r3, #3 - 8002796: 23dc movs r3, #220 ; 0xdc - 8002798: 9300 str r3, [sp, #0] - 800279a: 2352 movs r3, #82 ; 0x52 - 800279c: 2100 movs r1, #0 - 800279e: f002 f905 bl 80049ac - ST7793_DrawString(Green1, Black, "\xA9 Anton Mukhin", 280, 220); - 80027a2: 238c movs r3, #140 ; 0x8c - 80027a4: 005b lsls r3, r3, #1 - 80027a6: 4a10 ldr r2, [pc, #64] ; (80027e8 ) - 80027a8: 21e0 movs r1, #224 ; 0xe0 - 80027aa: 00c8 lsls r0, r1, #3 - 80027ac: 21dc movs r1, #220 ; 0xdc - 80027ae: 9100 str r1, [sp, #0] - 80027b0: 2100 movs r1, #0 - 80027b2: f002 f8ab bl 800490c - osMutexRelease(mutScreenHandle); - 80027b6: 4b05 ldr r3, [pc, #20] ; (80027cc ) - 80027b8: 681b ldr r3, [r3, #0] - 80027ba: 0018 movs r0, r3 - 80027bc: f009 fade bl 800bd7c -} - 80027c0: 46c0 nop ; (mov r8, r8) - 80027c2: 46bd mov sp, r7 - 80027c4: bd80 pop {r7, pc} - 80027c6: 46c0 nop ; (mov r8, r8) - 80027c8: 20000000 .word 0x20000000 - 80027cc: 20000168 .word 0x20000168 - 80027d0: 0000ffff .word 0x0000ffff - 80027d4: 0800f9ec .word 0x0800f9ec - 80027d8: 0800f6f0 .word 0x0800f6f0 - 80027dc: 0800f6fc .word 0x0800f6fc - 80027e0: 0800f70c .word 0x0800f70c - 80027e4: 0800fccc .word 0x0800fccc - 80027e8: 0800f718 .word 0x0800f718 - -080027ec : - -//Draw main screen -void drawMainScreen(void) { - 80027ec: b580 push {r7, lr} - 80027ee: b082 sub sp, #8 - 80027f0: af02 add r7, sp, #8 - static uint8_t in; - - Screen = SCR_MAIN; - 80027f2: 4b54 ldr r3, [pc, #336] ; (8002944 ) - 80027f4: 2200 movs r2, #0 - 80027f6: 701a strb r2, [r3, #0] - osMutexAcquire(mutScreenHandle, osWaitForever); - 80027f8: 4b53 ldr r3, [pc, #332] ; (8002948 ) - 80027fa: 681b ldr r3, [r3, #0] - 80027fc: 2201 movs r2, #1 - 80027fe: 4252 negs r2, r2 - 8002800: 0011 movs r1, r2 - 8002802: 0018 movs r0, r3 - 8002804: f009 fa6b bl 800bcde - ST7793_FillScreen(Darkergray); - 8002808: 4b50 ldr r3, [pc, #320] ; (800294c ) - 800280a: 0018 movs r0, r3 - 800280c: f001 fc0a bl 8004024 - for (in=0; in<=5; in++) { - 8002810: 4b4f ldr r3, [pc, #316] ; (8002950 ) - 8002812: 2200 movs r2, #0 - 8002814: 701a strb r2, [r3, #0] - 8002816: e020 b.n 800285a - ST7793_SetFontSize(buttons[in].fontsize); - 8002818: 4b4d ldr r3, [pc, #308] ; (8002950 ) - 800281a: 781b ldrb r3, [r3, #0] - 800281c: 0019 movs r1, r3 - 800281e: 4a4d ldr r2, [pc, #308] ; (8002954 ) - 8002820: 000b movs r3, r1 - 8002822: 009b lsls r3, r3, #2 - 8002824: 185b adds r3, r3, r1 - 8002826: 009b lsls r3, r3, #2 - 8002828: 18d3 adds r3, r2, r3 - 800282a: 330e adds r3, #14 - 800282c: 781b ldrb r3, [r3, #0] - 800282e: 0018 movs r0, r3 - 8002830: f001 fe4a bl 80044c8 - drawButton(in, (in == Preset)); - 8002834: 4b46 ldr r3, [pc, #280] ; (8002950 ) - 8002836: 7818 ldrb r0, [r3, #0] - 8002838: 4b45 ldr r3, [pc, #276] ; (8002950 ) - 800283a: 781a ldrb r2, [r3, #0] - 800283c: 4b46 ldr r3, [pc, #280] ; (8002958 ) - 800283e: 781b ldrb r3, [r3, #0] - 8002840: 1ad3 subs r3, r2, r3 - 8002842: 425a negs r2, r3 - 8002844: 4153 adcs r3, r2 - 8002846: b2db uxtb r3, r3 - 8002848: 0019 movs r1, r3 - 800284a: f000 fd5b bl 8003304 - for (in=0; in<=5; in++) { - 800284e: 4b40 ldr r3, [pc, #256] ; (8002950 ) - 8002850: 781b ldrb r3, [r3, #0] - 8002852: 3301 adds r3, #1 - 8002854: b2da uxtb r2, r3 - 8002856: 4b3e ldr r3, [pc, #248] ; (8002950 ) - 8002858: 701a strb r2, [r3, #0] - 800285a: 4b3d ldr r3, [pc, #244] ; (8002950 ) - 800285c: 781b ldrb r3, [r3, #0] - 800285e: 2b05 cmp r3, #5 - 8002860: d9da bls.n 8002818 - } - ST7793_SetFontSize(2); - 8002862: 2002 movs r0, #2 - 8002864: f001 fe30 bl 80044c8 - ST7793_DrawStringC(Cyan, Darkergray, "Time: 00:00", 10, 208); - 8002868: 4a3c ldr r2, [pc, #240] ; (800295c ) - 800286a: 4938 ldr r1, [pc, #224] ; (800294c ) - 800286c: 483c ldr r0, [pc, #240] ; (8002960 ) - 800286e: 23d0 movs r3, #208 ; 0xd0 - 8002870: 9300 str r3, [sp, #0] - 8002872: 230a movs r3, #10 - 8002874: f002 f89a bl 80049ac - - ST7793_DrawStringC(Yellow, Darkergray, "Temperature", 210, 5); - 8002878: 4a3a ldr r2, [pc, #232] ; (8002964 ) - 800287a: 4934 ldr r1, [pc, #208] ; (800294c ) - 800287c: 483a ldr r0, [pc, #232] ; (8002968 ) - 800287e: 2305 movs r3, #5 - 8002880: 9300 str r3, [sp, #0] - 8002882: 23d2 movs r3, #210 ; 0xd2 - 8002884: f002 f892 bl 80049ac - ST7793_SetFontSize(1); - 8002888: 2001 movs r0, #1 - 800288a: f001 fe1d bl 80044c8 - ST7793_DrawStringC(White, Darkergray, "Profile name:", 10, 2); - 800288e: 4a37 ldr r2, [pc, #220] ; (800296c ) - 8002890: 492e ldr r1, [pc, #184] ; (800294c ) - 8002892: 4837 ldr r0, [pc, #220] ; (8002970 ) - 8002894: 2302 movs r3, #2 - 8002896: 9300 str r3, [sp, #0] - 8002898: 230a movs r3, #10 - 800289a: f002 f887 bl 80049ac - ST7793_DrawStringC(White, Darkergray, presets[Preset].name, 10, 18); - 800289e: 4b2e ldr r3, [pc, #184] ; (8002958 ) - 80028a0: 781b ldrb r3, [r3, #0] - 80028a2: 001a movs r2, r3 - 80028a4: 0013 movs r3, r2 - 80028a6: 009b lsls r3, r3, #2 - 80028a8: 189b adds r3, r3, r2 - 80028aa: 00db lsls r3, r3, #3 - 80028ac: 3310 adds r3, #16 - 80028ae: 001a movs r2, r3 - 80028b0: 4b30 ldr r3, [pc, #192] ; (8002974 ) - 80028b2: 18d3 adds r3, r2, r3 - 80028b4: 1d1a adds r2, r3, #4 - 80028b6: 4925 ldr r1, [pc, #148] ; (800294c ) - 80028b8: 482d ldr r0, [pc, #180] ; (8002970 ) - 80028ba: 2312 movs r3, #18 - 80028bc: 9300 str r3, [sp, #0] - 80028be: 230a movs r3, #10 - 80028c0: f002 f874 bl 80049ac - ST7793_DrawStringC(Navy, Darkergray, "Planned", 225, 205); - 80028c4: 4a2c ldr r2, [pc, #176] ; (8002978 ) - 80028c6: 4921 ldr r1, [pc, #132] ; (800294c ) - 80028c8: 23cd movs r3, #205 ; 0xcd - 80028ca: 9300 str r3, [sp, #0] - 80028cc: 23e1 movs r3, #225 ; 0xe1 - 80028ce: 2010 movs r0, #16 - 80028d0: f002 f86c bl 80049ac - ST7793_DrawStringC(Red, Darkergray, "Realtime", 225, 220); - 80028d4: 4a29 ldr r2, [pc, #164] ; (800297c ) - 80028d6: 491d ldr r1, [pc, #116] ; (800294c ) - 80028d8: 23f8 movs r3, #248 ; 0xf8 - 80028da: 0218 lsls r0, r3, #8 - 80028dc: 23dc movs r3, #220 ; 0xdc - 80028de: 9300 str r3, [sp, #0] - 80028e0: 23e1 movs r3, #225 ; 0xe1 - 80028e2: f002 f863 bl 80049ac - ST7793_DrawLine(Navy, 200, 211, 220, 211); - 80028e6: 23d3 movs r3, #211 ; 0xd3 - 80028e8: 9300 str r3, [sp, #0] - 80028ea: 23dc movs r3, #220 ; 0xdc - 80028ec: 22d3 movs r2, #211 ; 0xd3 - 80028ee: 21c8 movs r1, #200 ; 0xc8 - 80028f0: 2010 movs r0, #16 - 80028f2: f001 fd0b bl 800430c - ST7793_DrawLine(Navy, 200, 212, 220, 212); - 80028f6: 23d4 movs r3, #212 ; 0xd4 - 80028f8: 9300 str r3, [sp, #0] - 80028fa: 23dc movs r3, #220 ; 0xdc - 80028fc: 22d4 movs r2, #212 ; 0xd4 - 80028fe: 21c8 movs r1, #200 ; 0xc8 - 8002900: 2010 movs r0, #16 - 8002902: f001 fd03 bl 800430c - ST7793_DrawLine(Red, 200, 226, 220, 226); - 8002906: 23f8 movs r3, #248 ; 0xf8 - 8002908: 0218 lsls r0, r3, #8 - 800290a: 23e2 movs r3, #226 ; 0xe2 - 800290c: 9300 str r3, [sp, #0] - 800290e: 23dc movs r3, #220 ; 0xdc - 8002910: 22e2 movs r2, #226 ; 0xe2 - 8002912: 21c8 movs r1, #200 ; 0xc8 - 8002914: f001 fcfa bl 800430c - ST7793_DrawLine(Red, 200, 227, 220, 227); - 8002918: 23f8 movs r3, #248 ; 0xf8 - 800291a: 0218 lsls r0, r3, #8 - 800291c: 23e3 movs r3, #227 ; 0xe3 - 800291e: 9300 str r3, [sp, #0] - 8002920: 23dc movs r3, #220 ; 0xdc - 8002922: 22e3 movs r2, #227 ; 0xe3 - 8002924: 21c8 movs r1, #200 ; 0xc8 - 8002926: f001 fcf1 bl 800430c - - drawPlan(0, 1, 0); - 800292a: 2200 movs r2, #0 - 800292c: 2101 movs r1, #1 - 800292e: 2000 movs r0, #0 - 8002930: f000 f8fa bl 8002b28 - osMutexRelease(mutScreenHandle); - 8002934: 4b04 ldr r3, [pc, #16] ; (8002948 ) - 8002936: 681b ldr r3, [r3, #0] - 8002938: 0018 movs r0, r3 - 800293a: f009 fa1f bl 800bd7c -} - 800293e: 46c0 nop ; (mov r8, r8) - 8002940: 46bd mov sp, r7 - 8002942: bd80 pop {r7, pc} - 8002944: 20000000 .word 0x20000000 - 8002948: 20000168 .word 0x20000168 - 800294c: 000039c7 .word 0x000039c7 - 8002950: 20000198 .word 0x20000198 - 8002954: 0800fcd4 .word 0x0800fcd4 - 8002958: 20000134 .word 0x20000134 - 800295c: 0800f728 .word 0x0800f728 - 8002960: 000007ff .word 0x000007ff - 8002964: 0800f734 .word 0x0800f734 - 8002968: 0000ffe0 .word 0x0000ffe0 - 800296c: 0800f740 .word 0x0800f740 - 8002970: 0000ffff .word 0x0000ffff - 8002974: 0800fe9c .word 0x0800fe9c - 8002978: 0800f750 .word 0x0800f750 - 800297c: 0800f758 .word 0x0800f758 - -08002980 : - -//Draw running screen -void drawRunningScreen(void) { - 8002980: b580 push {r7, lr} - 8002982: b082 sub sp, #8 - 8002984: af02 add r7, sp, #8 - Screen = SCR_RUNNING; - 8002986: 4b22 ldr r3, [pc, #136] ; (8002a10 ) - 8002988: 2201 movs r2, #1 - 800298a: 701a strb r2, [r3, #0] - osMutexAcquire(mutScreenHandle, osWaitForever); - 800298c: 4b21 ldr r3, [pc, #132] ; (8002a14 ) - 800298e: 681b ldr r3, [r3, #0] - 8002990: 2201 movs r2, #1 - 8002992: 4252 negs r2, r2 - 8002994: 0011 movs r1, r2 - 8002996: 0018 movs r0, r3 - 8002998: f009 f9a1 bl 800bcde - drawPlan(0, 0, 1); - 800299c: 2201 movs r2, #1 - 800299e: 2100 movs r1, #0 - 80029a0: 2000 movs r0, #0 - 80029a2: f000 f8c1 bl 8002b28 - ST7793_FillRect(Darkergray, buttons[0].x, buttons[0].y, GRAPH_X1-2, GRAPH_Y+GRAPH_H+1); - 80029a6: 210a movs r1, #10 - 80029a8: 2223 movs r2, #35 ; 0x23 - 80029aa: 481b ldr r0, [pc, #108] ; (8002a18 ) - 80029ac: 23c9 movs r3, #201 ; 0xc9 - 80029ae: 9300 str r3, [sp, #0] - 80029b0: 2344 movs r3, #68 ; 0x44 - 80029b2: f001 fba9 bl 8004108 - drawButton(BTN_STOP, 0); - 80029b6: 2100 movs r1, #0 - 80029b8: 2006 movs r0, #6 - 80029ba: f000 fca3 bl 8003304 - ST7793_FillRect(Darkergray, 210, 5, 386, 30); - 80029be: 23c1 movs r3, #193 ; 0xc1 - 80029c0: 005b lsls r3, r3, #1 - 80029c2: 4815 ldr r0, [pc, #84] ; (8002a18 ) - 80029c4: 221e movs r2, #30 - 80029c6: 9200 str r2, [sp, #0] - 80029c8: 2205 movs r2, #5 - 80029ca: 21d2 movs r1, #210 ; 0xd2 - 80029cc: f001 fb9c bl 8004108 - ST7793_DrawStringC(Yellow, Darkergray, stageNames[Stage], 210, 5); - 80029d0: 4b12 ldr r3, [pc, #72] ; (8002a1c ) - 80029d2: 781b ldrb r3, [r3, #0] - 80029d4: 00da lsls r2, r3, #3 - 80029d6: 4b12 ldr r3, [pc, #72] ; (8002a20 ) - 80029d8: 18d2 adds r2, r2, r3 - 80029da: 490f ldr r1, [pc, #60] ; (8002a18 ) - 80029dc: 4811 ldr r0, [pc, #68] ; (8002a24 ) - 80029de: 2305 movs r3, #5 - 80029e0: 9300 str r3, [sp, #0] - 80029e2: 23d2 movs r3, #210 ; 0xd2 - 80029e4: f001 ffe2 bl 80049ac - ST7793_SetFontSize(1); - 80029e8: 2001 movs r0, #1 - 80029ea: f001 fd6d bl 80044c8 - ST7793_DrawString(Black, Darkergray, "PID", 24, 160); - 80029ee: 4a0e ldr r2, [pc, #56] ; (8002a28 ) - 80029f0: 4909 ldr r1, [pc, #36] ; (8002a18 ) - 80029f2: 23a0 movs r3, #160 ; 0xa0 - 80029f4: 9300 str r3, [sp, #0] - 80029f6: 2318 movs r3, #24 - 80029f8: 2000 movs r0, #0 - 80029fa: f001 ff87 bl 800490c - - osMutexRelease(mutScreenHandle); - 80029fe: 4b05 ldr r3, [pc, #20] ; (8002a14 ) - 8002a00: 681b ldr r3, [r3, #0] - 8002a02: 0018 movs r0, r3 - 8002a04: f009 f9ba bl 800bd7c -} - 8002a08: 46c0 nop ; (mov r8, r8) - 8002a0a: 46bd mov sp, r7 - 8002a0c: bd80 pop {r7, pc} - 8002a0e: 46c0 nop ; (mov r8, r8) - 8002a10: 20000000 .word 0x20000000 - 8002a14: 20000168 .word 0x20000168 - 8002a18: 000039c7 .word 0x000039c7 - 8002a1c: 20000140 .word 0x20000140 - 8002a20: 0800fe74 .word 0x0800fe74 - 8002a24: 0000ffe0 .word 0x0000ffe0 - 8002a28: 0800f764 .word 0x0800f764 - -08002a2c : - -// Draw settings screen -void drawSettingsScreen(void) { - 8002a2c: b580 push {r7, lr} - 8002a2e: b084 sub sp, #16 - 8002a30: af02 add r7, sp, #8 - uint8_t i; - - Screen = SCR_SETTINGS; - 8002a32: 4b35 ldr r3, [pc, #212] ; (8002b08 ) - 8002a34: 2202 movs r2, #2 - 8002a36: 701a strb r2, [r3, #0] - osMutexAcquire(mutScreenHandle, osWaitForever); - 8002a38: 4b34 ldr r3, [pc, #208] ; (8002b0c ) - 8002a3a: 681b ldr r3, [r3, #0] - 8002a3c: 2201 movs r2, #1 - 8002a3e: 4252 negs r2, r2 - 8002a40: 0011 movs r1, r2 - 8002a42: 0018 movs r0, r3 - 8002a44: f009 f94b bl 800bcde - ST7793_FillScreen(Darkergray); - 8002a48: 4b31 ldr r3, [pc, #196] ; (8002b10 ) - 8002a4a: 0018 movs r0, r3 - 8002a4c: f001 faea bl 8004024 - - //Draw buttins - for (i=0; i - if ((scr_buttons[Screen] >> i) & 1) { - 8002a58: 4b2b ldr r3, [pc, #172] ; (8002b08 ) - 8002a5a: 781b ldrb r3, [r3, #0] - 8002a5c: 001a movs r2, r3 - 8002a5e: 4b2d ldr r3, [pc, #180] ; (8002b14 ) - 8002a60: 0092 lsls r2, r2, #2 - 8002a62: 58d2 ldr r2, [r2, r3] - 8002a64: 1dfb adds r3, r7, #7 - 8002a66: 781b ldrb r3, [r3, #0] - 8002a68: 40da lsrs r2, r3 - 8002a6a: 0013 movs r3, r2 - 8002a6c: 2201 movs r2, #1 - 8002a6e: 4013 ands r3, r2 - 8002a70: d005 beq.n 8002a7e - drawButton(i, 0); - 8002a72: 1dfb adds r3, r7, #7 - 8002a74: 781b ldrb r3, [r3, #0] - 8002a76: 2100 movs r1, #0 - 8002a78: 0018 movs r0, r3 - 8002a7a: f000 fc43 bl 8003304 - for (i=0; i - } - } - - //Draw check boxes - ST7793_SetFontSize(1); - 8002a90: 2001 movs r0, #1 - 8002a92: f001 fd19 bl 80044c8 - ST7793_DrawRect(Black, 10, 20, 27, 37); - 8002a96: 2325 movs r3, #37 ; 0x25 - 8002a98: 9300 str r3, [sp, #0] - 8002a9a: 231b movs r3, #27 - 8002a9c: 2214 movs r2, #20 - 8002a9e: 210a movs r1, #10 - 8002aa0: 2000 movs r0, #0 - 8002aa2: f001 fcc0 bl 8004426 - ST7793_Draw1bBitmap(Black, Lightgray, 11, 21, check_16x16); - 8002aa6: 491c ldr r1, [pc, #112] ; (8002b18 ) - 8002aa8: 4b1c ldr r3, [pc, #112] ; (8002b1c ) - 8002aaa: 9300 str r3, [sp, #0] - 8002aac: 2315 movs r3, #21 - 8002aae: 220b movs r2, #11 - 8002ab0: 2000 movs r0, #0 - 8002ab2: f002 fb11 bl 80050d8 - ST7793_DrawString(Black, Darkergray, "Boot screen", 36, 23); - 8002ab6: 4a1a ldr r2, [pc, #104] ; (8002b20 ) - 8002ab8: 4915 ldr r1, [pc, #84] ; (8002b10 ) - 8002aba: 2317 movs r3, #23 - 8002abc: 9300 str r3, [sp, #0] - 8002abe: 2324 movs r3, #36 ; 0x24 - 8002ac0: 2000 movs r0, #0 - 8002ac2: f001 ff23 bl 800490c - - ST7793_DrawRect(Black, 10, 50, 27, 67); - 8002ac6: 2343 movs r3, #67 ; 0x43 - 8002ac8: 9300 str r3, [sp, #0] - 8002aca: 231b movs r3, #27 - 8002acc: 2232 movs r2, #50 ; 0x32 - 8002ace: 210a movs r1, #10 - 8002ad0: 2000 movs r0, #0 - 8002ad2: f001 fca8 bl 8004426 - ST7793_FillRect(Lightgray, 11, 51, 26, 66); - 8002ad6: 4810 ldr r0, [pc, #64] ; (8002b18 ) - 8002ad8: 2342 movs r3, #66 ; 0x42 - 8002ada: 9300 str r3, [sp, #0] - 8002adc: 231a movs r3, #26 - 8002ade: 2233 movs r2, #51 ; 0x33 - 8002ae0: 210b movs r1, #11 - 8002ae2: f001 fb11 bl 8004108 - ST7793_DrawString(Black, Darkergray, "Button sounds", 36, 53); - 8002ae6: 4a0f ldr r2, [pc, #60] ; (8002b24 ) - 8002ae8: 4909 ldr r1, [pc, #36] ; (8002b10 ) - 8002aea: 2335 movs r3, #53 ; 0x35 - 8002aec: 9300 str r3, [sp, #0] - 8002aee: 2324 movs r3, #36 ; 0x24 - 8002af0: 2000 movs r0, #0 - 8002af2: f001 ff0b bl 800490c - - - osMutexRelease(mutScreenHandle); - 8002af6: 4b05 ldr r3, [pc, #20] ; (8002b0c ) - 8002af8: 681b ldr r3, [r3, #0] - 8002afa: 0018 movs r0, r3 - 8002afc: f009 f93e bl 800bd7c -} - 8002b00: 46c0 nop ; (mov r8, r8) - 8002b02: 46bd mov sp, r7 - 8002b04: b002 add sp, #8 - 8002b06: bd80 pop {r7, pc} - 8002b08: 20000000 .word 0x20000000 - 8002b0c: 20000168 .word 0x20000168 - 8002b10: 000039c7 .word 0x000039c7 - 8002b14: 0800fe64 .word 0x0800fe64 - 8002b18: 0000d69a .word 0x0000d69a - 8002b1c: 0800fca8 .word 0x0800fca8 - 8002b20: 0800f768 .word 0x0800f768 - 8002b24: 0800f774 .word 0x0800f774 - -08002b28 : - -// Draw planned graph -void drawPlan(uint8_t use_mutex, uint8_t numbers, uint8_t wide) { - 8002b28: b5b0 push {r4, r5, r7, lr} - 8002b2a: b086 sub sp, #24 - 8002b2c: af02 add r7, sp, #8 - 8002b2e: 0004 movs r4, r0 - 8002b30: 0008 movs r0, r1 - 8002b32: 0011 movs r1, r2 - 8002b34: 1dfb adds r3, r7, #7 - 8002b36: 1c22 adds r2, r4, #0 - 8002b38: 701a strb r2, [r3, #0] - 8002b3a: 1dbb adds r3, r7, #6 - 8002b3c: 1c02 adds r2, r0, #0 - 8002b3e: 701a strb r2, [r3, #0] - 8002b40: 1d7b adds r3, r7, #5 - 8002b42: 1c0a adds r2, r1, #0 - 8002b44: 701a strb r2, [r3, #0] - uint16_t max = 0; - 8002b46: 230e movs r3, #14 - 8002b48: 18fb adds r3, r7, r3 - 8002b4a: 2200 movs r2, #0 - 8002b4c: 801a strh r2, [r3, #0] - static uint8_t i, d; - static uint16_t x, y, x1, y1, g_x, g_w, x5; - char str[5]; - - if (wide) { - 8002b4e: 1d7b adds r3, r7, #5 - 8002b50: 781b ldrb r3, [r3, #0] - 8002b52: 2b00 cmp r3, #0 - 8002b54: d007 beq.n 8002b66 - g_x = GRAPH_X1; - 8002b56: 4b9f ldr r3, [pc, #636] ; (8002dd4 ) - 8002b58: 2246 movs r2, #70 ; 0x46 - 8002b5a: 801a strh r2, [r3, #0] - g_w = GRAPH_W1; - 8002b5c: 4b9e ldr r3, [pc, #632] ; (8002dd8 ) - 8002b5e: 2246 movs r2, #70 ; 0x46 - 8002b60: 32ff adds r2, #255 ; 0xff - 8002b62: 801a strh r2, [r3, #0] - 8002b64: e005 b.n 8002b72 - } else { - g_x = GRAPH_X; - 8002b66: 4b9b ldr r3, [pc, #620] ; (8002dd4 ) - 8002b68: 22c8 movs r2, #200 ; 0xc8 - 8002b6a: 801a strh r2, [r3, #0] - g_w = GRAPH_W; - 8002b6c: 4b9a ldr r3, [pc, #616] ; (8002dd8 ) - 8002b6e: 22c3 movs r2, #195 ; 0xc3 - 8002b70: 801a strh r2, [r3, #0] - } - - spp = (presets[Preset].time[3] + 30) / (float)g_w; - 8002b72: 4b9a ldr r3, [pc, #616] ; (8002ddc ) - 8002b74: 781b ldrb r3, [r3, #0] - 8002b76: 0019 movs r1, r3 - 8002b78: 4a99 ldr r2, [pc, #612] ; (8002de0 ) - 8002b7a: 000b movs r3, r1 - 8002b7c: 009b lsls r3, r3, #2 - 8002b7e: 185b adds r3, r3, r1 - 8002b80: 00db lsls r3, r3, #3 - 8002b82: 18d3 adds r3, r2, r3 - 8002b84: 3310 adds r3, #16 - 8002b86: 881b ldrh r3, [r3, #0] - 8002b88: 331e adds r3, #30 - 8002b8a: 0018 movs r0, r3 - 8002b8c: f7fe faf0 bl 8001170 <__aeabi_i2f> - 8002b90: 1c04 adds r4, r0, #0 - 8002b92: 4b91 ldr r3, [pc, #580] ; (8002dd8 ) - 8002b94: 881b ldrh r3, [r3, #0] - 8002b96: 0018 movs r0, r3 - 8002b98: f7fe fb38 bl 800120c <__aeabi_ui2f> - 8002b9c: 1c03 adds r3, r0, #0 - 8002b9e: 1c19 adds r1, r3, #0 - 8002ba0: 1c20 adds r0, r4, #0 - 8002ba2: f7fd fe29 bl 80007f8 <__aeabi_fdiv> - 8002ba6: 1c03 adds r3, r0, #0 - 8002ba8: 1c1a adds r2, r3, #0 - 8002baa: 4b8e ldr r3, [pc, #568] ; (8002de4 ) - 8002bac: 601a str r2, [r3, #0] - for (i=0; i<4; i++) if (presets[Preset].temperature[i] > max) max = presets[Preset].temperature[i]; // Max temperature in the profile - 8002bae: 4b8e ldr r3, [pc, #568] ; (8002de8 ) - 8002bb0: 2200 movs r2, #0 - 8002bb2: 701a strb r2, [r3, #0] - 8002bb4: e028 b.n 8002c08 - 8002bb6: 4b89 ldr r3, [pc, #548] ; (8002ddc ) - 8002bb8: 781b ldrb r3, [r3, #0] - 8002bba: 0019 movs r1, r3 - 8002bbc: 4b8a ldr r3, [pc, #552] ; (8002de8 ) - 8002bbe: 781b ldrb r3, [r3, #0] - 8002bc0: 0018 movs r0, r3 - 8002bc2: 4a87 ldr r2, [pc, #540] ; (8002de0 ) - 8002bc4: 000b movs r3, r1 - 8002bc6: 009b lsls r3, r3, #2 - 8002bc8: 185b adds r3, r3, r1 - 8002bca: 009b lsls r3, r3, #2 - 8002bcc: 181b adds r3, r3, r0 - 8002bce: 005b lsls r3, r3, #1 - 8002bd0: 5a9b ldrh r3, [r3, r2] - 8002bd2: 210e movs r1, #14 - 8002bd4: 187a adds r2, r7, r1 - 8002bd6: 8812 ldrh r2, [r2, #0] - 8002bd8: 429a cmp r2, r3 - 8002bda: d20f bcs.n 8002bfc - 8002bdc: 4b7f ldr r3, [pc, #508] ; (8002ddc ) - 8002bde: 781b ldrb r3, [r3, #0] - 8002be0: 0018 movs r0, r3 - 8002be2: 4b81 ldr r3, [pc, #516] ; (8002de8 ) - 8002be4: 781b ldrb r3, [r3, #0] - 8002be6: 001c movs r4, r3 - 8002be8: 187a adds r2, r7, r1 - 8002bea: 497d ldr r1, [pc, #500] ; (8002de0 ) - 8002bec: 0003 movs r3, r0 - 8002bee: 009b lsls r3, r3, #2 - 8002bf0: 181b adds r3, r3, r0 - 8002bf2: 009b lsls r3, r3, #2 - 8002bf4: 191b adds r3, r3, r4 - 8002bf6: 005b lsls r3, r3, #1 - 8002bf8: 5a5b ldrh r3, [r3, r1] - 8002bfa: 8013 strh r3, [r2, #0] - 8002bfc: 4b7a ldr r3, [pc, #488] ; (8002de8 ) - 8002bfe: 781b ldrb r3, [r3, #0] - 8002c00: 3301 adds r3, #1 - 8002c02: b2da uxtb r2, r3 - 8002c04: 4b78 ldr r3, [pc, #480] ; (8002de8 ) - 8002c06: 701a strb r2, [r3, #0] - 8002c08: 4b77 ldr r3, [pc, #476] ; (8002de8 ) - 8002c0a: 781b ldrb r3, [r3, #0] - 8002c0c: 2b03 cmp r3, #3 - 8002c0e: d9d2 bls.n 8002bb6 - dpp = (max - 20) / (float)(GRAPH_H - 32); //We start the graph from 20C / 32 pixels on top for numbers - 8002c10: 230e movs r3, #14 - 8002c12: 18fb adds r3, r7, r3 - 8002c14: 881b ldrh r3, [r3, #0] - 8002c16: 3b14 subs r3, #20 - 8002c18: 0018 movs r0, r3 - 8002c1a: f7fe faa9 bl 8001170 <__aeabi_i2f> - 8002c1e: 1c03 adds r3, r0, #0 - 8002c20: 4972 ldr r1, [pc, #456] ; (8002dec ) - 8002c22: 1c18 adds r0, r3, #0 - 8002c24: f7fd fde8 bl 80007f8 <__aeabi_fdiv> - 8002c28: 1c03 adds r3, r0, #0 - 8002c2a: 1c1a adds r2, r3, #0 - 8002c2c: 4b70 ldr r3, [pc, #448] ; (8002df0 ) - 8002c2e: 601a str r2, [r3, #0] - - if (use_mutex) osMutexAcquire(mutScreenHandle, osWaitForever); - 8002c30: 1dfb adds r3, r7, #7 - 8002c32: 781b ldrb r3, [r3, #0] - 8002c34: 2b00 cmp r3, #0 - 8002c36: d007 beq.n 8002c48 - 8002c38: 4b6e ldr r3, [pc, #440] ; (8002df4 ) - 8002c3a: 681b ldr r3, [r3, #0] - 8002c3c: 2201 movs r2, #1 - 8002c3e: 4252 negs r2, r2 - 8002c40: 0011 movs r1, r2 - 8002c42: 0018 movs r0, r3 - 8002c44: f009 f84b bl 800bcde - //Clear the graph area - ST7793_DrawRect(Black, g_x-1, GRAPH_Y-1, g_x+g_w+1, GRAPH_Y+GRAPH_H+1); - 8002c48: 4b62 ldr r3, [pc, #392] ; (8002dd4 ) - 8002c4a: 881b ldrh r3, [r3, #0] - 8002c4c: 3b01 subs r3, #1 - 8002c4e: b299 uxth r1, r3 - 8002c50: 4b60 ldr r3, [pc, #384] ; (8002dd4 ) - 8002c52: 881a ldrh r2, [r3, #0] - 8002c54: 4b60 ldr r3, [pc, #384] ; (8002dd8 ) - 8002c56: 881b ldrh r3, [r3, #0] - 8002c58: 18d3 adds r3, r2, r3 - 8002c5a: b29b uxth r3, r3 - 8002c5c: 3301 adds r3, #1 - 8002c5e: b29b uxth r3, r3 - 8002c60: 22c9 movs r2, #201 ; 0xc9 - 8002c62: 9200 str r2, [sp, #0] - 8002c64: 2222 movs r2, #34 ; 0x22 - 8002c66: 2000 movs r0, #0 - 8002c68: f001 fbdd bl 8004426 - ST7793_FillRect(Lightgray, g_x, GRAPH_Y, g_x+g_w, GRAPH_Y+GRAPH_H); - 8002c6c: 4b59 ldr r3, [pc, #356] ; (8002dd4 ) - 8002c6e: 8819 ldrh r1, [r3, #0] - 8002c70: 4b58 ldr r3, [pc, #352] ; (8002dd4 ) - 8002c72: 881a ldrh r2, [r3, #0] - 8002c74: 4b58 ldr r3, [pc, #352] ; (8002dd8 ) - 8002c76: 881b ldrh r3, [r3, #0] - 8002c78: 18d3 adds r3, r2, r3 - 8002c7a: b29b uxth r3, r3 - 8002c7c: 485e ldr r0, [pc, #376] ; (8002df8 ) - 8002c7e: 22c8 movs r2, #200 ; 0xc8 - 8002c80: 9200 str r2, [sp, #0] - 8002c82: 2223 movs r2, #35 ; 0x23 - 8002c84: f001 fa40 bl 8004108 - // draw time axis marks - y = GRAPH_Y+GRAPH_H; - 8002c88: 4b5c ldr r3, [pc, #368] ; (8002dfc ) - 8002c8a: 22c8 movs r2, #200 ; 0xc8 - 8002c8c: 801a strh r2, [r3, #0] - for (i=1; i*30/spp) - 8002c90: 2201 movs r2, #1 - 8002c92: 701a strb r2, [r3, #0] - 8002c94: e04c b.n 8002d30 - x = g_x + i*30/spp; - 8002c96: 4b4f ldr r3, [pc, #316] ; (8002dd4 ) - 8002c98: 881b ldrh r3, [r3, #0] - 8002c9a: 0018 movs r0, r3 - 8002c9c: f7fe fa68 bl 8001170 <__aeabi_i2f> - 8002ca0: 1c04 adds r4, r0, #0 - 8002ca2: 4b51 ldr r3, [pc, #324] ; (8002de8 ) - 8002ca4: 781b ldrb r3, [r3, #0] - 8002ca6: 001a movs r2, r3 - 8002ca8: 0013 movs r3, r2 - 8002caa: 011b lsls r3, r3, #4 - 8002cac: 1a9b subs r3, r3, r2 - 8002cae: 005b lsls r3, r3, #1 - 8002cb0: 0018 movs r0, r3 - 8002cb2: f7fe fa5d bl 8001170 <__aeabi_i2f> - 8002cb6: 1c02 adds r2, r0, #0 - 8002cb8: 4b4a ldr r3, [pc, #296] ; (8002de4 ) - 8002cba: 681b ldr r3, [r3, #0] - 8002cbc: 1c19 adds r1, r3, #0 - 8002cbe: 1c10 adds r0, r2, #0 - 8002cc0: f7fd fd9a bl 80007f8 <__aeabi_fdiv> - 8002cc4: 1c03 adds r3, r0, #0 - 8002cc6: 1c19 adds r1, r3, #0 - 8002cc8: 1c20 adds r0, r4, #0 - 8002cca: f7fd fbf7 bl 80004bc <__aeabi_fadd> - 8002cce: 1c03 adds r3, r0, #0 - 8002cd0: 1c18 adds r0, r3, #0 - 8002cd2: f7fd fbdb bl 800048c <__aeabi_f2uiz> - 8002cd6: 0003 movs r3, r0 - 8002cd8: b29a uxth r2, r3 - 8002cda: 4b49 ldr r3, [pc, #292] ; (8002e00 ) - 8002cdc: 801a strh r2, [r3, #0] - if (i % 2) d = 3; else d = 5; - 8002cde: 4b42 ldr r3, [pc, #264] ; (8002de8 ) - 8002ce0: 781b ldrb r3, [r3, #0] - 8002ce2: 2201 movs r2, #1 - 8002ce4: 4013 ands r3, r2 - 8002ce6: b2db uxtb r3, r3 - 8002ce8: 2b00 cmp r3, #0 - 8002cea: d003 beq.n 8002cf4 - 8002cec: 4b45 ldr r3, [pc, #276] ; (8002e04 ) - 8002cee: 2203 movs r2, #3 - 8002cf0: 701a strb r2, [r3, #0] - 8002cf2: e002 b.n 8002cfa - 8002cf4: 4b43 ldr r3, [pc, #268] ; (8002e04 ) - 8002cf6: 2205 movs r2, #5 - 8002cf8: 701a strb r2, [r3, #0] - y1 = GRAPH_Y+GRAPH_H - d; - 8002cfa: 4b42 ldr r3, [pc, #264] ; (8002e04 ) - 8002cfc: 781b ldrb r3, [r3, #0] - 8002cfe: b29b uxth r3, r3 - 8002d00: 22c8 movs r2, #200 ; 0xc8 - 8002d02: 1ad3 subs r3, r2, r3 - 8002d04: b29a uxth r2, r3 - 8002d06: 4b40 ldr r3, [pc, #256] ; (8002e08 ) - 8002d08: 801a strh r2, [r3, #0] - ST7793_DrawLine(Black, x, y, x, y1); - 8002d0a: 4b3d ldr r3, [pc, #244] ; (8002e00 ) - 8002d0c: 8819 ldrh r1, [r3, #0] - 8002d0e: 4b3b ldr r3, [pc, #236] ; (8002dfc ) - 8002d10: 881a ldrh r2, [r3, #0] - 8002d12: 4b3b ldr r3, [pc, #236] ; (8002e00 ) - 8002d14: 8818 ldrh r0, [r3, #0] - 8002d16: 4b3c ldr r3, [pc, #240] ; (8002e08 ) - 8002d18: 881b ldrh r3, [r3, #0] - 8002d1a: 9300 str r3, [sp, #0] - 8002d1c: 0003 movs r3, r0 - 8002d1e: 2000 movs r0, #0 - 8002d20: f001 faf4 bl 800430c - for (i=1; i*30/spp) - 8002d26: 781b ldrb r3, [r3, #0] - 8002d28: 3301 adds r3, #1 - 8002d2a: b2da uxtb r2, r3 - 8002d2c: 4b2e ldr r3, [pc, #184] ; (8002de8 ) - 8002d2e: 701a strb r2, [r3, #0] - 8002d30: 4b2d ldr r3, [pc, #180] ; (8002de8 ) - 8002d32: 781b ldrb r3, [r3, #0] - 8002d34: 001a movs r2, r3 - 8002d36: 0013 movs r3, r2 - 8002d38: 011b lsls r3, r3, #4 - 8002d3a: 1a9b subs r3, r3, r2 - 8002d3c: 005b lsls r3, r3, #1 - 8002d3e: 0018 movs r0, r3 - 8002d40: f7fe fa16 bl 8001170 <__aeabi_i2f> - 8002d44: 1c02 adds r2, r0, #0 - 8002d46: 4b27 ldr r3, [pc, #156] ; (8002de4 ) - 8002d48: 681b ldr r3, [r3, #0] - 8002d4a: 1c19 adds r1, r3, #0 - 8002d4c: 1c10 adds r0, r2, #0 - 8002d4e: f7fd fd53 bl 80007f8 <__aeabi_fdiv> - 8002d52: 1c03 adds r3, r0, #0 - 8002d54: 1c1c adds r4, r3, #0 - 8002d56: 4b20 ldr r3, [pc, #128] ; (8002dd8 ) - 8002d58: 881b ldrh r3, [r3, #0] - 8002d5a: 0018 movs r0, r3 - 8002d5c: f7fe fa08 bl 8001170 <__aeabi_i2f> - 8002d60: 1c03 adds r3, r0, #0 - 8002d62: 1c19 adds r1, r3, #0 - 8002d64: 1c20 adds r0, r4, #0 - 8002d66: f7fd fb69 bl 800043c <__aeabi_fcmplt> - 8002d6a: 1e03 subs r3, r0, #0 - 8002d6c: d193 bne.n 8002c96 - } - // draw temperature axis marks - x = g_x; - 8002d6e: 4b19 ldr r3, [pc, #100] ; (8002dd4 ) - 8002d70: 881a ldrh r2, [r3, #0] - 8002d72: 4b23 ldr r3, [pc, #140] ; (8002e00 ) - 8002d74: 801a strh r2, [r3, #0] - for (i=1; (i*25 - 20)/dpp) - 8002d78: 2201 movs r2, #1 - 8002d7a: 701a strb r2, [r3, #0] - 8002d7c: e068 b.n 8002e50 - y = GRAPH_Y+GRAPH_H - (i*25 - 20) / dpp; - 8002d7e: 4b1a ldr r3, [pc, #104] ; (8002de8 ) - 8002d80: 781b ldrb r3, [r3, #0] - 8002d82: 001a movs r2, r3 - 8002d84: 0013 movs r3, r2 - 8002d86: 009b lsls r3, r3, #2 - 8002d88: 189b adds r3, r3, r2 - 8002d8a: 009a lsls r2, r3, #2 - 8002d8c: 189b adds r3, r3, r2 - 8002d8e: 3b14 subs r3, #20 - 8002d90: 0018 movs r0, r3 - 8002d92: f7fe f9ed bl 8001170 <__aeabi_i2f> - 8002d96: 1c02 adds r2, r0, #0 - 8002d98: 4b15 ldr r3, [pc, #84] ; (8002df0 ) - 8002d9a: 681b ldr r3, [r3, #0] - 8002d9c: 1c19 adds r1, r3, #0 - 8002d9e: 1c10 adds r0, r2, #0 - 8002da0: f7fd fd2a bl 80007f8 <__aeabi_fdiv> - 8002da4: 1c03 adds r3, r0, #0 - 8002da6: 1c19 adds r1, r3, #0 - 8002da8: 4818 ldr r0, [pc, #96] ; (8002e0c ) - 8002daa: f7fe f813 bl 8000dd4 <__aeabi_fsub> - 8002dae: 1c03 adds r3, r0, #0 - 8002db0: 1c18 adds r0, r3, #0 - 8002db2: f7fd fb6b bl 800048c <__aeabi_f2uiz> - 8002db6: 0003 movs r3, r0 - 8002db8: b29a uxth r2, r3 - 8002dba: 4b10 ldr r3, [pc, #64] ; (8002dfc ) - 8002dbc: 801a strh r2, [r3, #0] - if (i % 2) d = 3; else d = 5; - 8002dbe: 4b0a ldr r3, [pc, #40] ; (8002de8 ) - 8002dc0: 781b ldrb r3, [r3, #0] - 8002dc2: 2201 movs r2, #1 - 8002dc4: 4013 ands r3, r2 - 8002dc6: b2db uxtb r3, r3 - 8002dc8: 2b00 cmp r3, #0 - 8002dca: d021 beq.n 8002e10 - 8002dcc: 4b0d ldr r3, [pc, #52] ; (8002e04 ) - 8002dce: 2203 movs r2, #3 - 8002dd0: 701a strb r2, [r3, #0] - 8002dd2: e020 b.n 8002e16 - 8002dd4: 2000019a .word 0x2000019a - 8002dd8: 2000019c .word 0x2000019c - 8002ddc: 20000134 .word 0x20000134 - 8002de0: 0800fe9c .word 0x0800fe9c - 8002de4: 20000144 .word 0x20000144 - 8002de8: 2000019e .word 0x2000019e - 8002dec: 43050000 .word 0x43050000 - 8002df0: 20000148 .word 0x20000148 - 8002df4: 20000168 .word 0x20000168 - 8002df8: 0000d69a .word 0x0000d69a - 8002dfc: 200001a0 .word 0x200001a0 - 8002e00: 200001a2 .word 0x200001a2 - 8002e04: 200001a4 .word 0x200001a4 - 8002e08: 200001a6 .word 0x200001a6 - 8002e0c: 43480000 .word 0x43480000 - 8002e10: 4bb0 ldr r3, [pc, #704] ; (80030d4 ) - 8002e12: 2205 movs r2, #5 - 8002e14: 701a strb r2, [r3, #0] - x1 = g_x + d; - 8002e16: 4baf ldr r3, [pc, #700] ; (80030d4 ) - 8002e18: 781b ldrb r3, [r3, #0] - 8002e1a: b29a uxth r2, r3 - 8002e1c: 4bae ldr r3, [pc, #696] ; (80030d8 ) - 8002e1e: 881b ldrh r3, [r3, #0] - 8002e20: 18d3 adds r3, r2, r3 - 8002e22: b29a uxth r2, r3 - 8002e24: 4bad ldr r3, [pc, #692] ; (80030dc ) - 8002e26: 801a strh r2, [r3, #0] - ST7793_DrawLine(Darkred, x, y, x1, y); - 8002e28: 4bad ldr r3, [pc, #692] ; (80030e0 ) - 8002e2a: 8819 ldrh r1, [r3, #0] - 8002e2c: 4bad ldr r3, [pc, #692] ; (80030e4 ) - 8002e2e: 881a ldrh r2, [r3, #0] - 8002e30: 4baa ldr r3, [pc, #680] ; (80030dc ) - 8002e32: 881c ldrh r4, [r3, #0] - 8002e34: 4bab ldr r3, [pc, #684] ; (80030e4 ) - 8002e36: 881b ldrh r3, [r3, #0] - 8002e38: 2088 movs r0, #136 ; 0x88 - 8002e3a: 0200 lsls r0, r0, #8 - 8002e3c: 9300 str r3, [sp, #0] - 8002e3e: 0023 movs r3, r4 - 8002e40: f001 fa64 bl 800430c - for (i=1; (i*25 - 20)/dpp) - 8002e46: 781b ldrb r3, [r3, #0] - 8002e48: 3301 adds r3, #1 - 8002e4a: b2da uxtb r2, r3 - 8002e4c: 4ba6 ldr r3, [pc, #664] ; (80030e8 ) - 8002e4e: 701a strb r2, [r3, #0] - 8002e50: 4ba5 ldr r3, [pc, #660] ; (80030e8 ) - 8002e52: 781b ldrb r3, [r3, #0] - 8002e54: 001a movs r2, r3 - 8002e56: 0013 movs r3, r2 - 8002e58: 009b lsls r3, r3, #2 - 8002e5a: 189b adds r3, r3, r2 - 8002e5c: 009a lsls r2, r3, #2 - 8002e5e: 189b adds r3, r3, r2 - 8002e60: 3b14 subs r3, #20 - 8002e62: 0018 movs r0, r3 - 8002e64: f7fe f984 bl 8001170 <__aeabi_i2f> - 8002e68: 1c02 adds r2, r0, #0 - 8002e6a: 4ba0 ldr r3, [pc, #640] ; (80030ec ) - 8002e6c: 681b ldr r3, [r3, #0] - 8002e6e: 1c19 adds r1, r3, #0 - 8002e70: 1c10 adds r0, r2, #0 - 8002e72: f7fd fcc1 bl 80007f8 <__aeabi_fdiv> - 8002e76: 1c03 adds r3, r0, #0 - 8002e78: 499d ldr r1, [pc, #628] ; (80030f0 ) - 8002e7a: 1c18 adds r0, r3, #0 - 8002e7c: f7fd fade bl 800043c <__aeabi_fcmplt> - 8002e80: 1e03 subs r3, r0, #0 - 8002e82: d000 beq.n 8002e86 - 8002e84: e77b b.n 8002d7e - } - - // draw stage 1 - x = g_x; - 8002e86: 4b94 ldr r3, [pc, #592] ; (80030d8 ) - 8002e88: 881a ldrh r2, [r3, #0] - 8002e8a: 4b95 ldr r3, [pc, #596] ; (80030e0 ) - 8002e8c: 801a strh r2, [r3, #0] - y = GRAPH_Y+GRAPH_H; - 8002e8e: 4b95 ldr r3, [pc, #596] ; (80030e4 ) - 8002e90: 22c8 movs r2, #200 ; 0xc8 - 8002e92: 801a strh r2, [r3, #0] - x1 = g_x + presets[Preset].time[0] / spp; - 8002e94: 4b90 ldr r3, [pc, #576] ; (80030d8 ) - 8002e96: 881b ldrh r3, [r3, #0] - 8002e98: 0018 movs r0, r3 - 8002e9a: f7fe f969 bl 8001170 <__aeabi_i2f> - 8002e9e: 1c04 adds r4, r0, #0 - 8002ea0: 4b94 ldr r3, [pc, #592] ; (80030f4 ) - 8002ea2: 781b ldrb r3, [r3, #0] - 8002ea4: 0019 movs r1, r3 - 8002ea6: 4a94 ldr r2, [pc, #592] ; (80030f8 ) - 8002ea8: 000b movs r3, r1 - 8002eaa: 009b lsls r3, r3, #2 - 8002eac: 185b adds r3, r3, r1 - 8002eae: 00db lsls r3, r3, #3 - 8002eb0: 18d3 adds r3, r2, r3 - 8002eb2: 330a adds r3, #10 - 8002eb4: 881b ldrh r3, [r3, #0] - 8002eb6: 0018 movs r0, r3 - 8002eb8: f7fe f95a bl 8001170 <__aeabi_i2f> - 8002ebc: 1c02 adds r2, r0, #0 - 8002ebe: 4b8f ldr r3, [pc, #572] ; (80030fc ) - 8002ec0: 681b ldr r3, [r3, #0] - 8002ec2: 1c19 adds r1, r3, #0 - 8002ec4: 1c10 adds r0, r2, #0 - 8002ec6: f7fd fc97 bl 80007f8 <__aeabi_fdiv> - 8002eca: 1c03 adds r3, r0, #0 - 8002ecc: 1c19 adds r1, r3, #0 - 8002ece: 1c20 adds r0, r4, #0 - 8002ed0: f7fd faf4 bl 80004bc <__aeabi_fadd> - 8002ed4: 1c03 adds r3, r0, #0 - 8002ed6: 1c18 adds r0, r3, #0 - 8002ed8: f7fd fad8 bl 800048c <__aeabi_f2uiz> - 8002edc: 0003 movs r3, r0 - 8002ede: b29a uxth r2, r3 - 8002ee0: 4b7e ldr r3, [pc, #504] ; (80030dc ) - 8002ee2: 801a strh r2, [r3, #0] - y1 = GRAPH_Y+GRAPH_H - (presets[Preset].temperature[0] - 20 ) / dpp; - 8002ee4: 4b83 ldr r3, [pc, #524] ; (80030f4 ) - 8002ee6: 781b ldrb r3, [r3, #0] - 8002ee8: 0019 movs r1, r3 - 8002eea: 4a83 ldr r2, [pc, #524] ; (80030f8 ) - 8002eec: 000b movs r3, r1 - 8002eee: 009b lsls r3, r3, #2 - 8002ef0: 185b adds r3, r3, r1 - 8002ef2: 00db lsls r3, r3, #3 - 8002ef4: 5a9b ldrh r3, [r3, r2] - 8002ef6: 3b14 subs r3, #20 - 8002ef8: 0018 movs r0, r3 - 8002efa: f7fe f939 bl 8001170 <__aeabi_i2f> - 8002efe: 1c02 adds r2, r0, #0 - 8002f00: 4b7a ldr r3, [pc, #488] ; (80030ec ) - 8002f02: 681b ldr r3, [r3, #0] - 8002f04: 1c19 adds r1, r3, #0 - 8002f06: 1c10 adds r0, r2, #0 - 8002f08: f7fd fc76 bl 80007f8 <__aeabi_fdiv> - 8002f0c: 1c03 adds r3, r0, #0 - 8002f0e: 1c19 adds r1, r3, #0 - 8002f10: 487b ldr r0, [pc, #492] ; (8003100 ) - 8002f12: f7fd ff5f bl 8000dd4 <__aeabi_fsub> - 8002f16: 1c03 adds r3, r0, #0 - 8002f18: 1c18 adds r0, r3, #0 - 8002f1a: f7fd fab7 bl 800048c <__aeabi_f2uiz> - 8002f1e: 0003 movs r3, r0 - 8002f20: b29a uxth r2, r3 - 8002f22: 4b78 ldr r3, [pc, #480] ; (8003104 ) - 8002f24: 801a strh r2, [r3, #0] - ST7793_DrawLine(Navy, x, y, x1, y1); - 8002f26: 4b6e ldr r3, [pc, #440] ; (80030e0 ) - 8002f28: 8819 ldrh r1, [r3, #0] - 8002f2a: 4b6e ldr r3, [pc, #440] ; (80030e4 ) - 8002f2c: 881a ldrh r2, [r3, #0] - 8002f2e: 4b6b ldr r3, [pc, #428] ; (80030dc ) - 8002f30: 8818 ldrh r0, [r3, #0] - 8002f32: 4b74 ldr r3, [pc, #464] ; (8003104 ) - 8002f34: 881b ldrh r3, [r3, #0] - 8002f36: 9300 str r3, [sp, #0] - 8002f38: 0003 movs r3, r0 - 8002f3a: 2010 movs r0, #16 - 8002f3c: f001 f9e6 bl 800430c - ST7793_DrawLine(Navy, x+1, y, x1+1, y1); - 8002f40: 4b67 ldr r3, [pc, #412] ; (80030e0 ) - 8002f42: 881b ldrh r3, [r3, #0] - 8002f44: 3301 adds r3, #1 - 8002f46: b299 uxth r1, r3 - 8002f48: 4b66 ldr r3, [pc, #408] ; (80030e4 ) - 8002f4a: 881a ldrh r2, [r3, #0] - 8002f4c: 4b63 ldr r3, [pc, #396] ; (80030dc ) - 8002f4e: 881b ldrh r3, [r3, #0] - 8002f50: 3301 adds r3, #1 - 8002f52: b298 uxth r0, r3 - 8002f54: 4b6b ldr r3, [pc, #428] ; (8003104 ) - 8002f56: 881b ldrh r3, [r3, #0] - 8002f58: 9300 str r3, [sp, #0] - 8002f5a: 0003 movs r3, r0 - 8002f5c: 2010 movs r0, #16 - 8002f5e: f001 f9d5 bl 800430c - - // draw stages 2, 3, 4, 5 - for (i=1; i<5; i++) { - 8002f62: 4b61 ldr r3, [pc, #388] ; (80030e8 ) - 8002f64: 2201 movs r2, #1 - 8002f66: 701a strb r2, [r3, #0] - 8002f68: e154 b.n 8003214 - //Calculate graph line coords - x = g_x + presets[Preset].time[i-1] / spp; - 8002f6a: 4b5b ldr r3, [pc, #364] ; (80030d8 ) - 8002f6c: 881b ldrh r3, [r3, #0] - 8002f6e: 0018 movs r0, r3 - 8002f70: f7fe f8fe bl 8001170 <__aeabi_i2f> - 8002f74: 1c04 adds r4, r0, #0 - 8002f76: 4b5f ldr r3, [pc, #380] ; (80030f4 ) - 8002f78: 781b ldrb r3, [r3, #0] - 8002f7a: 0018 movs r0, r3 - 8002f7c: 4b5a ldr r3, [pc, #360] ; (80030e8 ) - 8002f7e: 781b ldrb r3, [r3, #0] - 8002f80: 1e59 subs r1, r3, #1 - 8002f82: 4a5d ldr r2, [pc, #372] ; (80030f8 ) - 8002f84: 0003 movs r3, r0 - 8002f86: 009b lsls r3, r3, #2 - 8002f88: 181b adds r3, r3, r0 - 8002f8a: 009b lsls r3, r3, #2 - 8002f8c: 185b adds r3, r3, r1 - 8002f8e: 3304 adds r3, #4 - 8002f90: 005b lsls r3, r3, #1 - 8002f92: 18d3 adds r3, r2, r3 - 8002f94: 3302 adds r3, #2 - 8002f96: 881b ldrh r3, [r3, #0] - 8002f98: 0018 movs r0, r3 - 8002f9a: f7fe f8e9 bl 8001170 <__aeabi_i2f> - 8002f9e: 1c02 adds r2, r0, #0 - 8002fa0: 4b56 ldr r3, [pc, #344] ; (80030fc ) - 8002fa2: 681b ldr r3, [r3, #0] - 8002fa4: 1c19 adds r1, r3, #0 - 8002fa6: 1c10 adds r0, r2, #0 - 8002fa8: f7fd fc26 bl 80007f8 <__aeabi_fdiv> - 8002fac: 1c03 adds r3, r0, #0 - 8002fae: 1c19 adds r1, r3, #0 - 8002fb0: 1c20 adds r0, r4, #0 - 8002fb2: f7fd fa83 bl 80004bc <__aeabi_fadd> - 8002fb6: 1c03 adds r3, r0, #0 - 8002fb8: 1c18 adds r0, r3, #0 - 8002fba: f7fd fa67 bl 800048c <__aeabi_f2uiz> - 8002fbe: 0003 movs r3, r0 - 8002fc0: b29a uxth r2, r3 - 8002fc2: 4b47 ldr r3, [pc, #284] ; (80030e0 ) - 8002fc4: 801a strh r2, [r3, #0] - y = GRAPH_Y+GRAPH_H - (presets[Preset].temperature[i-1] - 20) / dpp; - 8002fc6: 4b4b ldr r3, [pc, #300] ; (80030f4 ) - 8002fc8: 781b ldrb r3, [r3, #0] - 8002fca: 0018 movs r0, r3 - 8002fcc: 4b46 ldr r3, [pc, #280] ; (80030e8 ) - 8002fce: 781b ldrb r3, [r3, #0] - 8002fd0: 1e59 subs r1, r3, #1 - 8002fd2: 4a49 ldr r2, [pc, #292] ; (80030f8 ) - 8002fd4: 0003 movs r3, r0 - 8002fd6: 009b lsls r3, r3, #2 - 8002fd8: 181b adds r3, r3, r0 - 8002fda: 009b lsls r3, r3, #2 - 8002fdc: 185b adds r3, r3, r1 - 8002fde: 005b lsls r3, r3, #1 - 8002fe0: 5a9b ldrh r3, [r3, r2] - 8002fe2: 3b14 subs r3, #20 - 8002fe4: 0018 movs r0, r3 - 8002fe6: f7fe f8c3 bl 8001170 <__aeabi_i2f> - 8002fea: 1c02 adds r2, r0, #0 - 8002fec: 4b3f ldr r3, [pc, #252] ; (80030ec ) - 8002fee: 681b ldr r3, [r3, #0] - 8002ff0: 1c19 adds r1, r3, #0 - 8002ff2: 1c10 adds r0, r2, #0 - 8002ff4: f7fd fc00 bl 80007f8 <__aeabi_fdiv> - 8002ff8: 1c03 adds r3, r0, #0 - 8002ffa: 1c19 adds r1, r3, #0 - 8002ffc: 4840 ldr r0, [pc, #256] ; (8003100 ) - 8002ffe: f7fd fee9 bl 8000dd4 <__aeabi_fsub> - 8003002: 1c03 adds r3, r0, #0 - 8003004: 1c18 adds r0, r3, #0 - 8003006: f7fd fa41 bl 800048c <__aeabi_f2uiz> - 800300a: 0003 movs r3, r0 - 800300c: b29a uxth r2, r3 - 800300e: 4b35 ldr r3, [pc, #212] ; (80030e4 ) - 8003010: 801a strh r2, [r3, #0] - x1 = g_x + presets[Preset].time[i] / spp; - 8003012: 4b31 ldr r3, [pc, #196] ; (80030d8 ) - 8003014: 881b ldrh r3, [r3, #0] - 8003016: 0018 movs r0, r3 - 8003018: f7fe f8aa bl 8001170 <__aeabi_i2f> - 800301c: 1c04 adds r4, r0, #0 - 800301e: 4b35 ldr r3, [pc, #212] ; (80030f4 ) - 8003020: 781b ldrb r3, [r3, #0] - 8003022: 0019 movs r1, r3 - 8003024: 4b30 ldr r3, [pc, #192] ; (80030e8 ) - 8003026: 781b ldrb r3, [r3, #0] - 8003028: 0018 movs r0, r3 - 800302a: 4a33 ldr r2, [pc, #204] ; (80030f8 ) - 800302c: 000b movs r3, r1 - 800302e: 009b lsls r3, r3, #2 - 8003030: 185b adds r3, r3, r1 - 8003032: 009b lsls r3, r3, #2 - 8003034: 181b adds r3, r3, r0 - 8003036: 3304 adds r3, #4 - 8003038: 005b lsls r3, r3, #1 - 800303a: 18d3 adds r3, r2, r3 - 800303c: 3302 adds r3, #2 - 800303e: 881b ldrh r3, [r3, #0] - 8003040: 0018 movs r0, r3 - 8003042: f7fe f895 bl 8001170 <__aeabi_i2f> - 8003046: 1c02 adds r2, r0, #0 - 8003048: 4b2c ldr r3, [pc, #176] ; (80030fc ) - 800304a: 681b ldr r3, [r3, #0] - 800304c: 1c19 adds r1, r3, #0 - 800304e: 1c10 adds r0, r2, #0 - 8003050: f7fd fbd2 bl 80007f8 <__aeabi_fdiv> - 8003054: 1c03 adds r3, r0, #0 - 8003056: 1c19 adds r1, r3, #0 - 8003058: 1c20 adds r0, r4, #0 - 800305a: f7fd fa2f bl 80004bc <__aeabi_fadd> - 800305e: 1c03 adds r3, r0, #0 - 8003060: 1c18 adds r0, r3, #0 - 8003062: f7fd fa13 bl 800048c <__aeabi_f2uiz> - 8003066: 0003 movs r3, r0 - 8003068: b29a uxth r2, r3 - 800306a: 4b1c ldr r3, [pc, #112] ; (80030dc ) - 800306c: 801a strh r2, [r3, #0] - y1 = GRAPH_Y+GRAPH_H - (presets[Preset].temperature[i] - 20) / dpp; - 800306e: 4b21 ldr r3, [pc, #132] ; (80030f4 ) - 8003070: 781b ldrb r3, [r3, #0] - 8003072: 0019 movs r1, r3 - 8003074: 4b1c ldr r3, [pc, #112] ; (80030e8 ) - 8003076: 781b ldrb r3, [r3, #0] - 8003078: 0018 movs r0, r3 - 800307a: 4a1f ldr r2, [pc, #124] ; (80030f8 ) - 800307c: 000b movs r3, r1 - 800307e: 009b lsls r3, r3, #2 - 8003080: 185b adds r3, r3, r1 - 8003082: 009b lsls r3, r3, #2 - 8003084: 181b adds r3, r3, r0 - 8003086: 005b lsls r3, r3, #1 - 8003088: 5a9b ldrh r3, [r3, r2] - 800308a: 3b14 subs r3, #20 - 800308c: 0018 movs r0, r3 - 800308e: f7fe f86f bl 8001170 <__aeabi_i2f> - 8003092: 1c02 adds r2, r0, #0 - 8003094: 4b15 ldr r3, [pc, #84] ; (80030ec ) - 8003096: 681b ldr r3, [r3, #0] - 8003098: 1c19 adds r1, r3, #0 - 800309a: 1c10 adds r0, r2, #0 - 800309c: f7fd fbac bl 80007f8 <__aeabi_fdiv> - 80030a0: 1c03 adds r3, r0, #0 - 80030a2: 1c19 adds r1, r3, #0 - 80030a4: 4816 ldr r0, [pc, #88] ; (8003100 ) - 80030a6: f7fd fe95 bl 8000dd4 <__aeabi_fsub> - 80030aa: 1c03 adds r3, r0, #0 - 80030ac: 1c18 adds r0, r3, #0 - 80030ae: f7fd f9ed bl 800048c <__aeabi_f2uiz> - 80030b2: 0003 movs r3, r0 - 80030b4: b29a uxth r2, r3 - 80030b6: 4b13 ldr r3, [pc, #76] ; (8003104 ) - 80030b8: 801a strh r2, [r3, #0] - //Draw numbers - if (numbers) { - 80030ba: 1dbb adds r3, r7, #6 - 80030bc: 781b ldrb r3, [r3, #0] - 80030be: 2b00 cmp r3, #0 - 80030c0: d06e beq.n 80031a0 - x5 = x - ((i < 4) ? 24 : 5); - 80030c2: 4b07 ldr r3, [pc, #28] ; (80030e0 ) - 80030c4: 881a ldrh r2, [r3, #0] - 80030c6: 4b08 ldr r3, [pc, #32] ; (80030e8 ) - 80030c8: 781b ldrb r3, [r3, #0] - 80030ca: 2b03 cmp r3, #3 - 80030cc: d81c bhi.n 8003108 - 80030ce: 2318 movs r3, #24 - 80030d0: e01b b.n 800310a - 80030d2: 46c0 nop ; (mov r8, r8) - 80030d4: 200001a4 .word 0x200001a4 - 80030d8: 2000019a .word 0x2000019a - 80030dc: 200001a8 .word 0x200001a8 - 80030e0: 200001a2 .word 0x200001a2 - 80030e4: 200001a0 .word 0x200001a0 - 80030e8: 2000019e .word 0x2000019e - 80030ec: 20000148 .word 0x20000148 - 80030f0: 43250000 .word 0x43250000 - 80030f4: 20000134 .word 0x20000134 - 80030f8: 0800fe9c .word 0x0800fe9c - 80030fc: 20000144 .word 0x20000144 - 8003100: 43480000 .word 0x43480000 - 8003104: 200001a6 .word 0x200001a6 - 8003108: 2305 movs r3, #5 - 800310a: 1ad3 subs r3, r2, r3 - 800310c: b29a uxth r2, r3 - 800310e: 4b4a ldr r3, [pc, #296] ; (8003238 ) - 8003110: 801a strh r2, [r3, #0] - //Print temperature - snprintf(str, 5, "%3d\xB0", presets[Preset].temperature[i-1]); - 8003112: 4b4a ldr r3, [pc, #296] ; (800323c ) - 8003114: 781b ldrb r3, [r3, #0] - 8003116: 0018 movs r0, r3 - 8003118: 4b49 ldr r3, [pc, #292] ; (8003240 ) - 800311a: 781b ldrb r3, [r3, #0] - 800311c: 1e59 subs r1, r3, #1 - 800311e: 4a49 ldr r2, [pc, #292] ; (8003244 ) - 8003120: 0003 movs r3, r0 - 8003122: 009b lsls r3, r3, #2 - 8003124: 181b adds r3, r3, r0 - 8003126: 009b lsls r3, r3, #2 - 8003128: 185b adds r3, r3, r1 - 800312a: 005b lsls r3, r3, #1 - 800312c: 5a9b ldrh r3, [r3, r2] - 800312e: 4a46 ldr r2, [pc, #280] ; (8003248 ) - 8003130: 2508 movs r5, #8 - 8003132: 1978 adds r0, r7, r5 - 8003134: 2105 movs r1, #5 - 8003136: f00b fe91 bl 800ee5c - ST7793_DrawTNString(Darkred, Lightgray, str, x5, y - 16); - 800313a: 4b3f ldr r3, [pc, #252] ; (8003238 ) - 800313c: 8819 ldrh r1, [r3, #0] - 800313e: 4b43 ldr r3, [pc, #268] ; (800324c ) - 8003140: 881b ldrh r3, [r3, #0] - 8003142: 3b10 subs r3, #16 - 8003144: b29b uxth r3, r3 - 8003146: 197a adds r2, r7, r5 - 8003148: 4c41 ldr r4, [pc, #260] ; (8003250 ) - 800314a: 2088 movs r0, #136 ; 0x88 - 800314c: 0200 lsls r0, r0, #8 - 800314e: 9300 str r3, [sp, #0] - 8003150: 000b movs r3, r1 - 8003152: 0021 movs r1, r4 - 8003154: f001 fc7a bl 8004a4c - //Print time - snprintf(str, 5, "%3ds", presets[Preset].time[i-1]); - 8003158: 4b38 ldr r3, [pc, #224] ; (800323c ) - 800315a: 781b ldrb r3, [r3, #0] - 800315c: 0018 movs r0, r3 - 800315e: 4b38 ldr r3, [pc, #224] ; (8003240 ) - 8003160: 781b ldrb r3, [r3, #0] - 8003162: 1e59 subs r1, r3, #1 - 8003164: 4a37 ldr r2, [pc, #220] ; (8003244 ) - 8003166: 0003 movs r3, r0 - 8003168: 009b lsls r3, r3, #2 - 800316a: 181b adds r3, r3, r0 - 800316c: 009b lsls r3, r3, #2 - 800316e: 185b adds r3, r3, r1 - 8003170: 3304 adds r3, #4 - 8003172: 005b lsls r3, r3, #1 - 8003174: 18d3 adds r3, r2, r3 - 8003176: 3302 adds r3, #2 - 8003178: 881b ldrh r3, [r3, #0] - 800317a: 4a36 ldr r2, [pc, #216] ; (8003254 ) - 800317c: 1978 adds r0, r7, r5 - 800317e: 2105 movs r1, #5 - 8003180: f00b fe6c bl 800ee5c - ST7793_DrawTNString(Black, Lightgray, str, x5, y - 8); - 8003184: 4b2c ldr r3, [pc, #176] ; (8003238 ) - 8003186: 8819 ldrh r1, [r3, #0] - 8003188: 4b30 ldr r3, [pc, #192] ; (800324c ) - 800318a: 881b ldrh r3, [r3, #0] - 800318c: 3b08 subs r3, #8 - 800318e: b29b uxth r3, r3 - 8003190: 197a adds r2, r7, r5 - 8003192: 482f ldr r0, [pc, #188] ; (8003250 ) - 8003194: 9300 str r3, [sp, #0] - 8003196: 000b movs r3, r1 - 8003198: 0001 movs r1, r0 - 800319a: 2000 movs r0, #0 - 800319c: f001 fc56 bl 8004a4c - } - //Draw graph line (two for a bolder line) - ST7793_DrawLine(Navy, x, y, x1, y1); - 80031a0: 4b2d ldr r3, [pc, #180] ; (8003258 ) - 80031a2: 8819 ldrh r1, [r3, #0] - 80031a4: 4b29 ldr r3, [pc, #164] ; (800324c ) - 80031a6: 881a ldrh r2, [r3, #0] - 80031a8: 4b2c ldr r3, [pc, #176] ; (800325c ) - 80031aa: 8818 ldrh r0, [r3, #0] - 80031ac: 4b2c ldr r3, [pc, #176] ; (8003260 ) - 80031ae: 881b ldrh r3, [r3, #0] - 80031b0: 9300 str r3, [sp, #0] - 80031b2: 0003 movs r3, r0 - 80031b4: 2010 movs r0, #16 - 80031b6: f001 f8a9 bl 800430c - if (i < 4) ST7793_DrawLine(Navy, x, y+1, x1, y1+1); - 80031ba: 4b21 ldr r3, [pc, #132] ; (8003240 ) - 80031bc: 781b ldrb r3, [r3, #0] - 80031be: 2b03 cmp r3, #3 - 80031c0: d811 bhi.n 80031e6 - 80031c2: 4b25 ldr r3, [pc, #148] ; (8003258 ) - 80031c4: 8819 ldrh r1, [r3, #0] - 80031c6: 4b21 ldr r3, [pc, #132] ; (800324c ) - 80031c8: 881b ldrh r3, [r3, #0] - 80031ca: 3301 adds r3, #1 - 80031cc: b29a uxth r2, r3 - 80031ce: 4b23 ldr r3, [pc, #140] ; (800325c ) - 80031d0: 8818 ldrh r0, [r3, #0] - 80031d2: 4b23 ldr r3, [pc, #140] ; (8003260 ) - 80031d4: 881b ldrh r3, [r3, #0] - 80031d6: 3301 adds r3, #1 - 80031d8: b29b uxth r3, r3 - 80031da: 9300 str r3, [sp, #0] - 80031dc: 0003 movs r3, r0 - 80031de: 2010 movs r0, #16 - 80031e0: f001 f894 bl 800430c - 80031e4: e010 b.n 8003208 - else ST7793_DrawLine(Navy, x-1, y, x1-1, y1); - 80031e6: 4b1c ldr r3, [pc, #112] ; (8003258 ) - 80031e8: 881b ldrh r3, [r3, #0] - 80031ea: 3b01 subs r3, #1 - 80031ec: b299 uxth r1, r3 - 80031ee: 4b17 ldr r3, [pc, #92] ; (800324c ) - 80031f0: 881a ldrh r2, [r3, #0] - 80031f2: 4b1a ldr r3, [pc, #104] ; (800325c ) - 80031f4: 881b ldrh r3, [r3, #0] - 80031f6: 3b01 subs r3, #1 - 80031f8: b298 uxth r0, r3 - 80031fa: 4b19 ldr r3, [pc, #100] ; (8003260 ) - 80031fc: 881b ldrh r3, [r3, #0] - 80031fe: 9300 str r3, [sp, #0] - 8003200: 0003 movs r3, r0 - 8003202: 2010 movs r0, #16 - 8003204: f001 f882 bl 800430c - for (i=1; i<5; i++) { - 8003208: 4b0d ldr r3, [pc, #52] ; (8003240 ) - 800320a: 781b ldrb r3, [r3, #0] - 800320c: 3301 adds r3, #1 - 800320e: b2da uxtb r2, r3 - 8003210: 4b0b ldr r3, [pc, #44] ; (8003240 ) - 8003212: 701a strb r2, [r3, #0] - 8003214: 4b0a ldr r3, [pc, #40] ; (8003240 ) - 8003216: 781b ldrb r3, [r3, #0] - 8003218: 2b04 cmp r3, #4 - 800321a: d800 bhi.n 800321e - 800321c: e6a5 b.n 8002f6a - } - - if (use_mutex) osMutexRelease(mutScreenHandle); - 800321e: 1dfb adds r3, r7, #7 - 8003220: 781b ldrb r3, [r3, #0] - 8003222: 2b00 cmp r3, #0 - 8003224: d004 beq.n 8003230 - 8003226: 4b0f ldr r3, [pc, #60] ; (8003264 ) - 8003228: 681b ldr r3, [r3, #0] - 800322a: 0018 movs r0, r3 - 800322c: f008 fda6 bl 800bd7c -} - 8003230: 46c0 nop ; (mov r8, r8) - 8003232: 46bd mov sp, r7 - 8003234: b004 add sp, #16 - 8003236: bdb0 pop {r4, r5, r7, pc} - 8003238: 200001aa .word 0x200001aa - 800323c: 20000134 .word 0x20000134 - 8003240: 2000019e .word 0x2000019e - 8003244: 0800fe9c .word 0x0800fe9c - 8003248: 0800f784 .word 0x0800f784 - 800324c: 200001a0 .word 0x200001a0 - 8003250: 0000d69a .word 0x0000d69a - 8003254: 0800f78c .word 0x0800f78c - 8003258: 200001a2 .word 0x200001a2 - 800325c: 200001a8 .word 0x200001a8 - 8003260: 200001a6 .word 0x200001a6 - 8003264: 20000168 .word 0x20000168 - -08003268 : - -//Play one of the beeps -void playSound(uint8_t sound) { - 8003268: b580 push {r7, lr} - 800326a: b084 sub sp, #16 - 800326c: af00 add r7, sp, #0 - 800326e: 0002 movs r2, r0 - 8003270: 1dfb adds r3, r7, #7 - 8003272: 701a strb r2, [r3, #0] - uint16_t time; - uint8_t enabled = 1; - 8003274: 230d movs r3, #13 - 8003276: 18fb adds r3, r7, r3 - 8003278: 2201 movs r2, #1 - 800327a: 701a strb r2, [r3, #0] - - switch (sound) { - 800327c: 1dfb adds r3, r7, #7 - 800327e: 781b ldrb r3, [r3, #0] - 8003280: 2b02 cmp r3, #2 - 8003282: d010 beq.n 80032a6 - 8003284: dc1d bgt.n 80032c2 - 8003286: 2b00 cmp r3, #0 - 8003288: d002 beq.n 8003290 - 800328a: 2b01 cmp r3, #1 - 800328c: d006 beq.n 800329c - 800328e: e018 b.n 80032c2 - case S_LONG_BEEP: - time = 300; - 8003290: 230e movs r3, #14 - 8003292: 18fb adds r3, r7, r3 - 8003294: 2296 movs r2, #150 ; 0x96 - 8003296: 0052 lsls r2, r2, #1 - 8003298: 801a strh r2, [r3, #0] - break; - 800329a: e012 b.n 80032c2 - case S_SHORT_BEEP: - time = 40; - 800329c: 230e movs r3, #14 - 800329e: 18fb adds r3, r7, r3 - 80032a0: 2228 movs r2, #40 ; 0x28 - 80032a2: 801a strh r2, [r3, #0] - break; - 80032a4: e00d b.n 80032c2 - case S_CLICK: - if (!settings.btn_clicks) enabled = 0; - 80032a6: 4b13 ldr r3, [pc, #76] ; (80032f4 ) - 80032a8: 789b ldrb r3, [r3, #2] - 80032aa: 2b00 cmp r3, #0 - 80032ac: d104 bne.n 80032b8 - 80032ae: 230d movs r3, #13 - 80032b0: 18fb adds r3, r7, r3 - 80032b2: 2200 movs r2, #0 - 80032b4: 701a strb r2, [r3, #0] - else time = 10; - break; - 80032b6: e003 b.n 80032c0 - else time = 10; - 80032b8: 230e movs r3, #14 - 80032ba: 18fb adds r3, r7, r3 - 80032bc: 220a movs r2, #10 - 80032be: 801a strh r2, [r3, #0] - break; - 80032c0: 46c0 nop ; (mov r8, r8) - } - if (enabled) { - 80032c2: 230d movs r3, #13 - 80032c4: 18fb adds r3, r7, r3 - 80032c6: 781b ldrb r3, [r3, #0] - 80032c8: 2b00 cmp r3, #0 - 80032ca: d00f beq.n 80032ec - TIM17->ARR = time; - 80032cc: 4b0a ldr r3, [pc, #40] ; (80032f8 ) - 80032ce: 220e movs r2, #14 - 80032d0: 18ba adds r2, r7, r2 - 80032d2: 8812 ldrh r2, [r2, #0] - 80032d4: 62da str r2, [r3, #44] ; 0x2c - HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_SET); - 80032d6: 2380 movs r3, #128 ; 0x80 - 80032d8: 009b lsls r3, r3, #2 - 80032da: 4808 ldr r0, [pc, #32] ; (80032fc ) - 80032dc: 2201 movs r2, #1 - 80032de: 0019 movs r1, r3 - 80032e0: f004 faa4 bl 800782c - HAL_TIM_Base_Start_IT(&htim17); - 80032e4: 4b06 ldr r3, [pc, #24] ; (8003300 ) - 80032e6: 0018 movs r0, r3 - 80032e8: f005 ff22 bl 8009130 - } - -} - 80032ec: 46c0 nop ; (mov r8, r8) - 80032ee: 46bd mov sp, r7 - 80032f0: b004 add sp, #16 - 80032f2: bd80 pop {r7, pc} - 80032f4: 20000004 .word 0x20000004 - 80032f8: 40014800 .word 0x40014800 - 80032fc: 50000400 .word 0x50000400 - 8003300: 20000344 .word 0x20000344 - -08003304 : - -//Draw a button by ID -void drawButton(uint8_t id, uint8_t func) { - 8003304: b5f0 push {r4, r5, r6, r7, lr} - 8003306: 46ce mov lr, r9 - 8003308: 4647 mov r7, r8 - 800330a: b580 push {r7, lr} - 800330c: b089 sub sp, #36 ; 0x24 - 800330e: af06 add r7, sp, #24 - 8003310: 0002 movs r2, r0 - 8003312: 1dfb adds r3, r7, #7 - 8003314: 701a strb r2, [r3, #0] - 8003316: 1dbb adds r3, r7, #6 - 8003318: 1c0a adds r2, r1, #0 - 800331a: 701a strb r2, [r3, #0] - ST7793_SetFontSize(buttons[id].fontsize); - 800331c: 1dfb adds r3, r7, #7 - 800331e: 781a ldrb r2, [r3, #0] - 8003320: 4937 ldr r1, [pc, #220] ; (8003400 ) - 8003322: 0013 movs r3, r2 - 8003324: 009b lsls r3, r3, #2 - 8003326: 189b adds r3, r3, r2 - 8003328: 009b lsls r3, r3, #2 - 800332a: 18cb adds r3, r1, r3 - 800332c: 330e adds r3, #14 - 800332e: 781b ldrb r3, [r3, #0] - 8003330: 0018 movs r0, r3 - 8003332: f001 f8c9 bl 80044c8 - ST7793_DrawButton( - 8003336: 1dfb adds r3, r7, #7 - 8003338: 781a ldrb r2, [r3, #0] - 800333a: 4931 ldr r1, [pc, #196] ; (8003400 ) - 800333c: 0013 movs r3, r2 - 800333e: 009b lsls r3, r3, #2 - 8003340: 189b adds r3, r3, r2 - 8003342: 009b lsls r3, r3, #2 - 8003344: 5c5e ldrb r6, [r3, r1] - 8003346: 1dfb adds r3, r7, #7 - 8003348: 781a ldrb r2, [r3, #0] - 800334a: 492d ldr r1, [pc, #180] ; (8003400 ) - 800334c: 0013 movs r3, r2 - 800334e: 009b lsls r3, r3, #2 - 8003350: 189b adds r3, r3, r2 - 8003352: 009b lsls r3, r3, #2 - 8003354: 18cb adds r3, r1, r3 - 8003356: 3302 adds r3, #2 - 8003358: 881b ldrh r3, [r3, #0] - 800335a: 469c mov ip, r3 - 800335c: 1dfb adds r3, r7, #7 - 800335e: 781a ldrb r2, [r3, #0] - 8003360: 4927 ldr r1, [pc, #156] ; (8003400 ) - 8003362: 0013 movs r3, r2 - 8003364: 009b lsls r3, r3, #2 - 8003366: 189b adds r3, r3, r2 - 8003368: 009b lsls r3, r3, #2 - 800336a: 18cb adds r3, r1, r3 - 800336c: 3304 adds r3, #4 - 800336e: 881b ldrh r3, [r3, #0] - 8003370: 4698 mov r8, r3 - 8003372: 1dfb adds r3, r7, #7 - 8003374: 781a ldrb r2, [r3, #0] - 8003376: 4922 ldr r1, [pc, #136] ; (8003400 ) - 8003378: 0013 movs r3, r2 - 800337a: 009b lsls r3, r3, #2 - 800337c: 189b adds r3, r3, r2 - 800337e: 009b lsls r3, r3, #2 - 8003380: 18cb adds r3, r1, r3 - 8003382: 3306 adds r3, #6 - 8003384: 881b ldrh r3, [r3, #0] - 8003386: 4699 mov r9, r3 - 8003388: 1dfb adds r3, r7, #7 - 800338a: 781a ldrb r2, [r3, #0] - 800338c: 491c ldr r1, [pc, #112] ; (8003400 ) - 800338e: 0013 movs r3, r2 - 8003390: 009b lsls r3, r3, #2 - 8003392: 189b adds r3, r3, r2 - 8003394: 009b lsls r3, r3, #2 - 8003396: 18cb adds r3, r1, r3 - 8003398: 3308 adds r3, #8 - 800339a: 8819 ldrh r1, [r3, #0] - 800339c: 1dfb adds r3, r7, #7 - 800339e: 781a ldrb r2, [r3, #0] - 80033a0: 4817 ldr r0, [pc, #92] ; (8003400 ) - 80033a2: 0013 movs r3, r2 - 80033a4: 009b lsls r3, r3, #2 - 80033a6: 189b adds r3, r3, r2 - 80033a8: 009b lsls r3, r3, #2 - 80033aa: 18c3 adds r3, r0, r3 - 80033ac: 330a adds r3, #10 - 80033ae: 8818 ldrh r0, [r3, #0] - 80033b0: 1dfb adds r3, r7, #7 - 80033b2: 781a ldrb r2, [r3, #0] - 80033b4: 4c12 ldr r4, [pc, #72] ; (8003400 ) - 80033b6: 0013 movs r3, r2 - 80033b8: 009b lsls r3, r3, #2 - 80033ba: 189b adds r3, r3, r2 - 80033bc: 009b lsls r3, r3, #2 - 80033be: 18e3 adds r3, r4, r3 - 80033c0: 330c adds r3, #12 - 80033c2: 881c ldrh r4, [r3, #0] - 80033c4: 1dfb adds r3, r7, #7 - 80033c6: 781a ldrb r2, [r3, #0] - 80033c8: 4d0d ldr r5, [pc, #52] ; (8003400 ) - 80033ca: 0013 movs r3, r2 - 80033cc: 009b lsls r3, r3, #2 - 80033ce: 189b adds r3, r3, r2 - 80033d0: 009b lsls r3, r3, #2 - 80033d2: 18eb adds r3, r5, r3 - 80033d4: 3310 adds r3, #16 - 80033d6: 681b ldr r3, [r3, #0] - 80033d8: 1dba adds r2, r7, #6 - 80033da: 7812 ldrb r2, [r2, #0] - 80033dc: 9204 str r2, [sp, #16] - 80033de: 9303 str r3, [sp, #12] - 80033e0: 9402 str r4, [sp, #8] - 80033e2: 9001 str r0, [sp, #4] - 80033e4: 9100 str r1, [sp, #0] - 80033e6: 464b mov r3, r9 - 80033e8: 4642 mov r2, r8 - 80033ea: 4661 mov r1, ip - 80033ec: 0030 movs r0, r6 - 80033ee: f001 fb79 bl 8004ae4 - buttons[id].x2, - buttons[id].y2, - buttons[id].data, - func - ); -} - 80033f2: 46c0 nop ; (mov r8, r8) - 80033f4: 46bd mov sp, r7 - 80033f6: b003 add sp, #12 - 80033f8: bcc0 pop {r6, r7} - 80033fa: 46b9 mov r9, r7 - 80033fc: 46b0 mov r8, r6 - 80033fe: bdf0 pop {r4, r5, r6, r7, pc} - 8003400: 0800fcd4 .word 0x0800fcd4 - -08003404 : - * Output - * EVENT_OUT - * EXTI -*/ -void MX_GPIO_Init(void) -{ - 8003404: b590 push {r4, r7, lr} - 8003406: b08b sub sp, #44 ; 0x2c - 8003408: af00 add r7, sp, #0 - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 800340a: 2414 movs r4, #20 - 800340c: 193b adds r3, r7, r4 - 800340e: 0018 movs r0, r3 - 8003410: 2314 movs r3, #20 - 8003412: 001a movs r2, r3 - 8003414: 2100 movs r1, #0 - 8003416: f00b fbfa bl 800ec0e - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOC_CLK_ENABLE(); - 800341a: 4b70 ldr r3, [pc, #448] ; (80035dc ) - 800341c: 6b5a ldr r2, [r3, #52] ; 0x34 - 800341e: 4b6f ldr r3, [pc, #444] ; (80035dc ) - 8003420: 2104 movs r1, #4 - 8003422: 430a orrs r2, r1 - 8003424: 635a str r2, [r3, #52] ; 0x34 - 8003426: 4b6d ldr r3, [pc, #436] ; (80035dc ) - 8003428: 6b5b ldr r3, [r3, #52] ; 0x34 - 800342a: 2204 movs r2, #4 - 800342c: 4013 ands r3, r2 - 800342e: 613b str r3, [r7, #16] - 8003430: 693b ldr r3, [r7, #16] - __HAL_RCC_GPIOF_CLK_ENABLE(); - 8003432: 4b6a ldr r3, [pc, #424] ; (80035dc ) - 8003434: 6b5a ldr r2, [r3, #52] ; 0x34 - 8003436: 4b69 ldr r3, [pc, #420] ; (80035dc ) - 8003438: 2120 movs r1, #32 - 800343a: 430a orrs r2, r1 - 800343c: 635a str r2, [r3, #52] ; 0x34 - 800343e: 4b67 ldr r3, [pc, #412] ; (80035dc ) - 8003440: 6b5b ldr r3, [r3, #52] ; 0x34 - 8003442: 2220 movs r2, #32 - 8003444: 4013 ands r3, r2 - 8003446: 60fb str r3, [r7, #12] - 8003448: 68fb ldr r3, [r7, #12] - __HAL_RCC_GPIOA_CLK_ENABLE(); - 800344a: 4b64 ldr r3, [pc, #400] ; (80035dc ) - 800344c: 6b5a ldr r2, [r3, #52] ; 0x34 - 800344e: 4b63 ldr r3, [pc, #396] ; (80035dc ) - 8003450: 2101 movs r1, #1 - 8003452: 430a orrs r2, r1 - 8003454: 635a str r2, [r3, #52] ; 0x34 - 8003456: 4b61 ldr r3, [pc, #388] ; (80035dc ) - 8003458: 6b5b ldr r3, [r3, #52] ; 0x34 - 800345a: 2201 movs r2, #1 - 800345c: 4013 ands r3, r2 - 800345e: 60bb str r3, [r7, #8] - 8003460: 68bb ldr r3, [r7, #8] - __HAL_RCC_GPIOB_CLK_ENABLE(); - 8003462: 4b5e ldr r3, [pc, #376] ; (80035dc ) - 8003464: 6b5a ldr r2, [r3, #52] ; 0x34 - 8003466: 4b5d ldr r3, [pc, #372] ; (80035dc ) - 8003468: 2102 movs r1, #2 - 800346a: 430a orrs r2, r1 - 800346c: 635a str r2, [r3, #52] ; 0x34 - 800346e: 4b5b ldr r3, [pc, #364] ; (80035dc ) - 8003470: 6b5b ldr r3, [r3, #52] ; 0x34 - 8003472: 2202 movs r2, #2 - 8003474: 4013 ands r3, r2 - 8003476: 607b str r3, [r7, #4] - 8003478: 687b ldr r3, [r7, #4] - __HAL_RCC_GPIOD_CLK_ENABLE(); - 800347a: 4b58 ldr r3, [pc, #352] ; (80035dc ) - 800347c: 6b5a ldr r2, [r3, #52] ; 0x34 - 800347e: 4b57 ldr r3, [pc, #348] ; (80035dc ) - 8003480: 2108 movs r1, #8 - 8003482: 430a orrs r2, r1 - 8003484: 635a str r2, [r3, #52] ; 0x34 - 8003486: 4b55 ldr r3, [pc, #340] ; (80035dc ) - 8003488: 6b5b ldr r3, [r3, #52] ; 0x34 - 800348a: 2208 movs r2, #8 - 800348c: 4013 ands r3, r2 - 800348e: 603b str r3, [r7, #0] - 8003490: 683b ldr r3, [r7, #0] - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, LED_Status_Pin|LCD_RD_Pin|LCD_RST_Pin, GPIO_PIN_RESET); - 8003492: 4b53 ldr r3, [pc, #332] ; (80035e0 ) - 8003494: 2200 movs r2, #0 - 8003496: 2134 movs r1, #52 ; 0x34 - 8003498: 0018 movs r0, r3 - 800349a: f004 f9c7 bl 800782c - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOA, LCD_D0_Pin|LCD_D1_Pin|LCD_D2_Pin|LCD_D3_Pin - 800349e: 23a0 movs r3, #160 ; 0xa0 - 80034a0: 05db lsls r3, r3, #23 - 80034a2: 2200 movs r2, #0 - 80034a4: 21ff movs r1, #255 ; 0xff - 80034a6: 0018 movs r0, r3 - 80034a8: f004 f9c0 bl 800782c - |LCD_D4_Pin|LCD_D5_Pin|LCD_D6_Pin|LCD_D7_Pin, GPIO_PIN_RESET); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOB, LCD_RS_Pin|LCD_WR_Pin|BUZZER_Pin, GPIO_PIN_RESET); - 80034ac: 494d ldr r1, [pc, #308] ; (80035e4 ) - 80034ae: 4b4e ldr r3, [pc, #312] ; (80035e8 ) - 80034b0: 2200 movs r2, #0 - 80034b2: 0018 movs r0, r3 - 80034b4: f004 f9ba bl 800782c - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(MAX_CS_GPIO_Port, MAX_CS_Pin, GPIO_PIN_SET); - 80034b8: 2380 movs r3, #128 ; 0x80 - 80034ba: 021b lsls r3, r3, #8 - 80034bc: 484a ldr r0, [pc, #296] ; (80035e8 ) - 80034be: 2201 movs r2, #1 - 80034c0: 0019 movs r1, r3 - 80034c2: f004 f9b3 bl 800782c - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(LCD_CS_GPIO_Port, LCD_CS_Pin, GPIO_PIN_RESET); - 80034c6: 4b49 ldr r3, [pc, #292] ; (80035ec ) - 80034c8: 2200 movs r2, #0 - 80034ca: 2110 movs r1, #16 - 80034cc: 0018 movs r0, r3 - 80034ce: f004 f9ad bl 800782c - - /*Configure GPIO pin : PtPin */ - GPIO_InitStruct.Pin = LED_Status_Pin; - 80034d2: 193b adds r3, r7, r4 - 80034d4: 2204 movs r2, #4 - 80034d6: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 80034d8: 193b adds r3, r7, r4 - 80034da: 2201 movs r2, #1 - 80034dc: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 80034de: 193b adds r3, r7, r4 - 80034e0: 2200 movs r2, #0 - 80034e2: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - 80034e4: 193b adds r3, r7, r4 - 80034e6: 2202 movs r2, #2 - 80034e8: 60da str r2, [r3, #12] - HAL_GPIO_Init(LED_Status_GPIO_Port, &GPIO_InitStruct); - 80034ea: 193b adds r3, r7, r4 - 80034ec: 4a3c ldr r2, [pc, #240] ; (80035e0 ) - 80034ee: 0019 movs r1, r3 - 80034f0: 0010 movs r0, r2 - 80034f2: f004 f837 bl 8007564 - - /*Configure GPIO pin : PtPin */ - GPIO_InitStruct.Pin = btnSTOP_Pin; - 80034f6: 193b adds r3, r7, r4 - 80034f8: 2208 movs r2, #8 - 80034fa: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 80034fc: 193b adds r3, r7, r4 - 80034fe: 2200 movs r2, #0 - 8003500: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_PULLUP; - 8003502: 193b adds r3, r7, r4 - 8003504: 2201 movs r2, #1 - 8003506: 609a str r2, [r3, #8] - HAL_GPIO_Init(btnSTOP_GPIO_Port, &GPIO_InitStruct); - 8003508: 193b adds r3, r7, r4 - 800350a: 4a35 ldr r2, [pc, #212] ; (80035e0 ) - 800350c: 0019 movs r1, r3 - 800350e: 0010 movs r0, r2 - 8003510: f004 f828 bl 8007564 - - /*Configure GPIO pins : PAPin PAPin PAPin PAPin - PAPin PAPin PAPin PAPin */ - GPIO_InitStruct.Pin = LCD_D0_Pin|LCD_D1_Pin|LCD_D2_Pin|LCD_D3_Pin - 8003514: 193b adds r3, r7, r4 - 8003516: 22ff movs r2, #255 ; 0xff - 8003518: 601a str r2, [r3, #0] - |LCD_D4_Pin|LCD_D5_Pin|LCD_D6_Pin|LCD_D7_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 800351a: 193b adds r3, r7, r4 - 800351c: 2201 movs r2, #1 - 800351e: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8003520: 193b adds r3, r7, r4 - 8003522: 2200 movs r2, #0 - 8003524: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8003526: 193b adds r3, r7, r4 - 8003528: 2203 movs r2, #3 - 800352a: 60da str r2, [r3, #12] - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 800352c: 193a adds r2, r7, r4 - 800352e: 23a0 movs r3, #160 ; 0xa0 - 8003530: 05db lsls r3, r3, #23 - 8003532: 0011 movs r1, r2 - 8003534: 0018 movs r0, r3 - 8003536: f004 f815 bl 8007564 - - /*Configure GPIO pins : PCPin PCPin */ - GPIO_InitStruct.Pin = LCD_RD_Pin|LCD_RST_Pin; - 800353a: 193b adds r3, r7, r4 - 800353c: 2230 movs r2, #48 ; 0x30 - 800353e: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8003540: 193b adds r3, r7, r4 - 8003542: 2201 movs r2, #1 - 8003544: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8003546: 193b adds r3, r7, r4 - 8003548: 2200 movs r2, #0 - 800354a: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 800354c: 193b adds r3, r7, r4 - 800354e: 2203 movs r2, #3 - 8003550: 60da str r2, [r3, #12] - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8003552: 193b adds r3, r7, r4 - 8003554: 4a22 ldr r2, [pc, #136] ; (80035e0 ) - 8003556: 0019 movs r1, r3 - 8003558: 0010 movs r0, r2 - 800355a: f004 f803 bl 8007564 - - /*Configure GPIO pins : PBPin PBPin */ - GPIO_InitStruct.Pin = LCD_RS_Pin|LCD_WR_Pin; - 800355e: 193b adds r3, r7, r4 - 8003560: 2203 movs r2, #3 - 8003562: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8003564: 193b adds r3, r7, r4 - 8003566: 2201 movs r2, #1 - 8003568: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 800356a: 193b adds r3, r7, r4 - 800356c: 2200 movs r2, #0 - 800356e: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 8003570: 193b adds r3, r7, r4 - 8003572: 2203 movs r2, #3 - 8003574: 60da str r2, [r3, #12] - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8003576: 193b adds r3, r7, r4 - 8003578: 4a1b ldr r2, [pc, #108] ; (80035e8 ) - 800357a: 0019 movs r1, r3 - 800357c: 0010 movs r0, r2 - 800357e: f003 fff1 bl 8007564 - - /*Configure GPIO pins : PBPin PBPin */ - GPIO_InitStruct.Pin = MAX_CS_Pin|BUZZER_Pin; - 8003582: 0021 movs r1, r4 - 8003584: 187b adds r3, r7, r1 - 8003586: 2282 movs r2, #130 ; 0x82 - 8003588: 0212 lsls r2, r2, #8 - 800358a: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 800358c: 000c movs r4, r1 - 800358e: 193b adds r3, r7, r4 - 8003590: 2201 movs r2, #1 - 8003592: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8003594: 193b adds r3, r7, r4 - 8003596: 2200 movs r2, #0 - 8003598: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - 800359a: 193b adds r3, r7, r4 - 800359c: 2202 movs r2, #2 - 800359e: 60da str r2, [r3, #12] - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 80035a0: 193b adds r3, r7, r4 - 80035a2: 4a11 ldr r2, [pc, #68] ; (80035e8 ) - 80035a4: 0019 movs r1, r3 - 80035a6: 0010 movs r0, r2 - 80035a8: f003 ffdc bl 8007564 - - /*Configure GPIO pin : PtPin */ - GPIO_InitStruct.Pin = LCD_CS_Pin; - 80035ac: 0021 movs r1, r4 - 80035ae: 187b adds r3, r7, r1 - 80035b0: 2210 movs r2, #16 - 80035b2: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 80035b4: 187b adds r3, r7, r1 - 80035b6: 2201 movs r2, #1 - 80035b8: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 80035ba: 187b adds r3, r7, r1 - 80035bc: 2200 movs r2, #0 - 80035be: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 80035c0: 187b adds r3, r7, r1 - 80035c2: 2203 movs r2, #3 - 80035c4: 60da str r2, [r3, #12] - HAL_GPIO_Init(LCD_CS_GPIO_Port, &GPIO_InitStruct); - 80035c6: 187b adds r3, r7, r1 - 80035c8: 4a08 ldr r2, [pc, #32] ; (80035ec ) - 80035ca: 0019 movs r1, r3 - 80035cc: 0010 movs r0, r2 - 80035ce: f003 ffc9 bl 8007564 - -} - 80035d2: 46c0 nop ; (mov r8, r8) - 80035d4: 46bd mov sp, r7 - 80035d6: b00b add sp, #44 ; 0x2c - 80035d8: bd90 pop {r4, r7, pc} - 80035da: 46c0 nop ; (mov r8, r8) - 80035dc: 40021000 .word 0x40021000 - 80035e0: 50000800 .word 0x50000800 - 80035e4: 00000203 .word 0x00000203 - 80035e8: 50000400 .word 0x50000400 - 80035ec: 50000c00 .word 0x50000c00 - -080035f0
: -/** - * @brief The application entry point. - * @retval int - */ -int main(void) -{ - 80035f0: b580 push {r7, lr} - 80035f2: af00 add r7, sp, #0 - /* USER CODE END 1 */ - - /* MCU Configuration--------------------------------------------------------*/ - - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); - 80035f4: f002 fe02 bl 80061fc - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* Configure the system clock */ - SystemClock_Config(); - 80035f8: f000 f840 bl 800367c - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - 80035fc: f7ff ff02 bl 8003404 - MX_TIM1_Init(); - 8003600: f002 f994 bl 800592c - MX_ADC1_Init(); - 8003604: f7fe f986 bl 8001914 - MX_SPI2_Init(); - 8003608: f000 fa28 bl 8003a5c - MX_TIM17_Init(); - 800360c: f002 fbbe bl 8005d8c - MX_TIM15_Init(); - 8003610: f002 fb04 bl 8005c1c - MX_TIM14_Init(); - 8003614: f002 fab2 bl 8005b7c - MX_USART1_UART_Init(); - 8003618: f002 fd16 bl 8006048 - /* USER CODE BEGIN 2 */ - __HAL_TIM_CLEAR_FLAG(&htim17, TIM_SR_UIF); //clear the update flag so it wont trigger right away; - 800361c: 4b12 ldr r3, [pc, #72] ; (8003668 ) - 800361e: 681b ldr r3, [r3, #0] - 8003620: 2202 movs r2, #2 - 8003622: 4252 negs r2, r2 - 8003624: 611a str r2, [r3, #16] - if (ST7793_Init() != 0) { - 8003626: f000 fc0f bl 8003e48 - 800362a: 1e03 subs r3, r0, #0 - 800362c: d006 beq.n 800363c - HAL_GPIO_WritePin(LED_Status_GPIO_Port, LED_Status_Pin, GPIO_PIN_SET); - 800362e: 4b0f ldr r3, [pc, #60] ; (800366c ) - 8003630: 2201 movs r2, #1 - 8003632: 2104 movs r1, #4 - 8003634: 0018 movs r0, r3 - 8003636: f004 f8f9 bl 800782c - while (1) {;} - 800363a: e7fe b.n 800363a - } - //draw_main_menu(); - HAL_ADCEx_Calibration_Start(&hadc1); - 800363c: 4b0c ldr r3, [pc, #48] ; (8003670 ) - 800363e: 0018 movs r0, r3 - 8003640: f003 fe0c bl 800725c - HAL_TIM_OnePulse_Start(&htim1, 2); - 8003644: 4b0b ldr r3, [pc, #44] ; (8003674 ) - 8003646: 2102 movs r1, #2 - 8003648: 0018 movs r0, r3 - 800364a: f005 fff3 bl 8009634 - //TIM1->CR1 |= TIM_CR1_CEN; - HAL_TIM_PWM_Start(&htim15, TIM_CHANNEL_1); - 800364e: 4b0a ldr r3, [pc, #40] ; (8003678 ) - 8003650: 2100 movs r1, #0 - 8003652: 0018 movs r0, r3 - 8003654: f005 fe50 bl 80092f8 - /* USER CODE END 2 */ - - /* Init scheduler */ - osKernelInitialize(); /* Call init function for freertos objects (in freertos.c) */ - 8003658: f008 f8b8 bl 800b7cc - MX_FREERTOS_Init(); - 800365c: f7fe fa22 bl 8001aa4 - - /* Start scheduler */ - osKernelStart(); - 8003660: f008 f8d6 bl 800b810 - - /* We should never get here as control is now taken by the scheduler */ - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - 8003664: e7fe b.n 8003664 - 8003666: 46c0 nop ; (mov r8, r8) - 8003668: 20000344 .word 0x20000344 - 800366c: 50000800 .word 0x50000800 - 8003670: 200000d0 .word 0x200000d0 - 8003674: 20000260 .word 0x20000260 - 8003678: 200002f8 .word 0x200002f8 - -0800367c : -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - 800367c: b590 push {r4, r7, lr} - 800367e: b093 sub sp, #76 ; 0x4c - 8003680: af00 add r7, sp, #0 - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 8003682: 2414 movs r4, #20 - 8003684: 193b adds r3, r7, r4 - 8003686: 0018 movs r0, r3 - 8003688: 2334 movs r3, #52 ; 0x34 - 800368a: 001a movs r2, r3 - 800368c: 2100 movs r1, #0 - 800368e: f00b fabe bl 800ec0e - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 8003692: 1d3b adds r3, r7, #4 - 8003694: 0018 movs r0, r3 - 8003696: 2310 movs r3, #16 - 8003698: 001a movs r2, r3 - 800369a: 2100 movs r1, #0 - 800369c: f00b fab7 bl 800ec0e - - /** Configure the main internal regulator output voltage - */ - HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); - 80036a0: 2380 movs r3, #128 ; 0x80 - 80036a2: 009b lsls r3, r3, #2 - 80036a4: 0018 movs r0, r3 - 80036a6: f004 f8df bl 8007868 - - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - 80036aa: 193b adds r3, r7, r4 - 80036ac: 2202 movs r2, #2 - 80036ae: 601a str r2, [r3, #0] - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 80036b0: 193b adds r3, r7, r4 - 80036b2: 2280 movs r2, #128 ; 0x80 - 80036b4: 0052 lsls r2, r2, #1 - 80036b6: 60da str r2, [r3, #12] - RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1; - 80036b8: 0021 movs r1, r4 - 80036ba: 187b adds r3, r7, r1 - 80036bc: 2200 movs r2, #0 - 80036be: 611a str r2, [r3, #16] - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - 80036c0: 187b adds r3, r7, r1 - 80036c2: 2240 movs r2, #64 ; 0x40 - 80036c4: 615a str r2, [r3, #20] - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 80036c6: 187b adds r3, r7, r1 - 80036c8: 2202 movs r2, #2 - 80036ca: 61da str r2, [r3, #28] - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - 80036cc: 187b adds r3, r7, r1 - 80036ce: 2202 movs r2, #2 - 80036d0: 621a str r2, [r3, #32] - RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1; - 80036d2: 187b adds r3, r7, r1 - 80036d4: 2200 movs r2, #0 - 80036d6: 625a str r2, [r3, #36] ; 0x24 - RCC_OscInitStruct.PLL.PLLN = 8; - 80036d8: 187b adds r3, r7, r1 - 80036da: 2208 movs r2, #8 - 80036dc: 629a str r2, [r3, #40] ; 0x28 - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - 80036de: 187b adds r3, r7, r1 - 80036e0: 2280 movs r2, #128 ; 0x80 - 80036e2: 0292 lsls r2, r2, #10 - 80036e4: 62da str r2, [r3, #44] ; 0x2c - RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; - 80036e6: 187b adds r3, r7, r1 - 80036e8: 2280 movs r2, #128 ; 0x80 - 80036ea: 0592 lsls r2, r2, #22 - 80036ec: 631a str r2, [r3, #48] ; 0x30 - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 80036ee: 187b adds r3, r7, r1 - 80036f0: 0018 movs r0, r3 - 80036f2: f004 f905 bl 8007900 - 80036f6: 1e03 subs r3, r0, #0 - 80036f8: d001 beq.n 80036fe - { - Error_Handler(); - 80036fa: f000 f841 bl 8003780 - } - - /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 80036fe: 1d3b adds r3, r7, #4 - 8003700: 2207 movs r2, #7 - 8003702: 601a str r2, [r3, #0] - |RCC_CLOCKTYPE_PCLK1; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 8003704: 1d3b adds r3, r7, #4 - 8003706: 2202 movs r2, #2 - 8003708: 605a str r2, [r3, #4] - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 800370a: 1d3b adds r3, r7, #4 - 800370c: 2200 movs r2, #0 - 800370e: 609a str r2, [r3, #8] - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - 8003710: 1d3b adds r3, r7, #4 - 8003712: 2200 movs r2, #0 - 8003714: 60da str r2, [r3, #12] - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - 8003716: 1d3b adds r3, r7, #4 - 8003718: 2102 movs r1, #2 - 800371a: 0018 movs r0, r3 - 800371c: f004 fc00 bl 8007f20 - 8003720: 1e03 subs r3, r0, #0 - 8003722: d001 beq.n 8003728 - { - Error_Handler(); - 8003724: f000 f82c bl 8003780 - } -} - 8003728: 46c0 nop ; (mov r8, r8) - 800372a: 46bd mov sp, r7 - 800372c: b013 add sp, #76 ; 0x4c - 800372e: bd90 pop {r4, r7, pc} - -08003730 : - * a global variable "uwTick" used as application time base. - * @param htim : TIM handle - * @retval None - */ -void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) -{ - 8003730: b580 push {r7, lr} - 8003732: b082 sub sp, #8 - 8003734: af00 add r7, sp, #0 - 8003736: 6078 str r0, [r7, #4] - /* USER CODE BEGIN Callback 0 */ - - /* USER CODE END Callback 0 */ - if (htim->Instance == TIM6) { - 8003738: 687b ldr r3, [r7, #4] - 800373a: 681b ldr r3, [r3, #0] - 800373c: 4a0c ldr r2, [pc, #48] ; (8003770 ) - 800373e: 4293 cmp r3, r2 - 8003740: d101 bne.n 8003746 - HAL_IncTick(); - 8003742: f002 fd7b bl 800623c - } - /* USER CODE BEGIN Callback 1 */ - - if (htim->Instance == TIM17) { - 8003746: 687b ldr r3, [r7, #4] - 8003748: 681b ldr r3, [r3, #0] - 800374a: 4a0a ldr r2, [pc, #40] ; (8003774 ) - 800374c: 4293 cmp r3, r2 - 800374e: d10a bne.n 8003766 - HAL_TIM_Base_Stop_IT(&htim17); - 8003750: 4b09 ldr r3, [pc, #36] ; (8003778 ) - 8003752: 0018 movs r0, r3 - 8003754: f005 fd42 bl 80091dc - HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_RESET); - 8003758: 2380 movs r3, #128 ; 0x80 - 800375a: 009b lsls r3, r3, #2 - 800375c: 4807 ldr r0, [pc, #28] ; (800377c ) - 800375e: 2200 movs r2, #0 - 8003760: 0019 movs r1, r3 - 8003762: f004 f863 bl 800782c - } - - /* USER CODE END Callback 1 */ -} - 8003766: 46c0 nop ; (mov r8, r8) - 8003768: 46bd mov sp, r7 - 800376a: b002 add sp, #8 - 800376c: bd80 pop {r7, pc} - 800376e: 46c0 nop ; (mov r8, r8) - 8003770: 40001000 .word 0x40001000 - 8003774: 40014800 .word 0x40014800 - 8003778: 20000344 .word 0x20000344 - 800377c: 50000400 .word 0x50000400 - -08003780 : -/** - * @brief This function is executed in case of error occurrence. - * @retval None - */ -void Error_Handler(void) -{ - 8003780: b580 push {r7, lr} - 8003782: af00 add r7, sp, #0 - \details Disables IRQ interrupts by setting the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__STATIC_FORCEINLINE void __disable_irq(void) -{ - __ASM volatile ("cpsid i" : : : "memory"); - 8003784: b672 cpsid i -} - 8003786: 46c0 nop ; (mov r8, r8) - /* USER CODE BEGIN Error_Handler_Debug */ - /* User can add his own implementation to report the HAL error return state */ - __disable_irq(); - while (1) - 8003788: e7fe b.n 8003788 - ... - -0800378c : - * Author: mcfly - */ -#include "max6675.h" - -//Read the temperature. -1.0: SPI error; -2.0: Sensor is not connected -float MAX6675_GetTemp() { - 800378c: b580 push {r7, lr} - 800378e: b082 sub sp, #8 - 8003790: af00 add r7, sp, #0 - uint8_t buf[2] = {0}; //Buffer - 8003792: 003b movs r3, r7 - 8003794: 2200 movs r2, #0 - 8003796: 801a strh r2, [r3, #0] - uint16_t reg; //temp data var - float res; - - MAX6675_CS_ON(); - 8003798: 2380 movs r3, #128 ; 0x80 - 800379a: 021b lsls r3, r3, #8 - 800379c: 4821 ldr r0, [pc, #132] ; (8003824 ) - 800379e: 2200 movs r2, #0 - 80037a0: 0019 movs r1, r3 - 80037a2: f004 f843 bl 800782c - if (HAL_SPI_Receive(MAX6675_SPI, buf, 2, 50) == HAL_OK) { //Read 2 bytes from SPI - 80037a6: 0039 movs r1, r7 - 80037a8: 481f ldr r0, [pc, #124] ; (8003828 ) - 80037aa: 2332 movs r3, #50 ; 0x32 - 80037ac: 2202 movs r2, #2 - 80037ae: f004 ff75 bl 800869c - 80037b2: 1e03 subs r3, r0, #0 - 80037b4: d128 bne.n 8003808 - if (buf[1] & 0b00000100) { //Check the thermocouple "connected" bit - 80037b6: 003b movs r3, r7 - 80037b8: 785b ldrb r3, [r3, #1] - 80037ba: 001a movs r2, r3 - 80037bc: 2304 movs r3, #4 - 80037be: 4013 ands r3, r2 - 80037c0: d003 beq.n 80037ca - res = -2.0f; //-2.0 for disconnected sensor - 80037c2: 23c0 movs r3, #192 ; 0xc0 - 80037c4: 061b lsls r3, r3, #24 - 80037c6: 607b str r3, [r7, #4] - 80037c8: e020 b.n 800380c - } else { - reg = (buf[1] >> 3) | ((uint16_t)(buf[0] << 5)); //combine the rest of the data - 80037ca: 003b movs r3, r7 - 80037cc: 785b ldrb r3, [r3, #1] - 80037ce: 08db lsrs r3, r3, #3 - 80037d0: b2db uxtb r3, r3 - 80037d2: b299 uxth r1, r3 - 80037d4: 003b movs r3, r7 - 80037d6: 781b ldrb r3, [r3, #0] - 80037d8: b29b uxth r3, r3 - 80037da: 015b lsls r3, r3, #5 - 80037dc: b29a uxth r2, r3 - 80037de: 1cbb adds r3, r7, #2 - 80037e0: 430a orrs r2, r1 - 80037e2: 801a strh r2, [r3, #0] - res = reg * 0.25; //convert to Celsius - 80037e4: 1cbb adds r3, r7, #2 - 80037e6: 881b ldrh r3, [r3, #0] - 80037e8: 0018 movs r0, r3 - 80037ea: f7fd ffbd bl 8001768 <__aeabi_i2d> - 80037ee: 2200 movs r2, #0 - 80037f0: 4b0e ldr r3, [pc, #56] ; (800382c ) - 80037f2: f7fd fd4d bl 8001290 <__aeabi_dmul> - 80037f6: 0002 movs r2, r0 - 80037f8: 000b movs r3, r1 - 80037fa: 0010 movs r0, r2 - 80037fc: 0019 movs r1, r3 - 80037fe: f7fd ffe3 bl 80017c8 <__aeabi_d2f> - 8003802: 1c03 adds r3, r0, #0 - 8003804: 607b str r3, [r7, #4] - 8003806: e001 b.n 800380c - } - } else { - res = -1.0f; //-1.0 for SPI receive error - 8003808: 4b09 ldr r3, [pc, #36] ; (8003830 ) - 800380a: 607b str r3, [r7, #4] - } - MAX6675_CS_OFF(); - 800380c: 2380 movs r3, #128 ; 0x80 - 800380e: 021b lsls r3, r3, #8 - 8003810: 4804 ldr r0, [pc, #16] ; (8003824 ) - 8003812: 2201 movs r2, #1 - 8003814: 0019 movs r1, r3 - 8003816: f004 f809 bl 800782c - return res; - 800381a: 687b ldr r3, [r7, #4] -} - 800381c: 1c18 adds r0, r3, #0 - 800381e: 46bd mov sp, r7 - 8003820: b002 add sp, #8 - 8003822: bd80 pop {r7, pc} - 8003824: 50000400 .word 0x50000400 - 8003828: 200001ac .word 0x200001ac - 800382c: 3fd00000 .word 0x3fd00000 - 8003830: bf800000 .word 0xbf800000 - -08003834 : - * Author: mcfly - */ - -#include "pid.h" - -void PID_Init(PIDController *pid) { - 8003834: b580 push {r7, lr} - 8003836: b082 sub sp, #8 - 8003838: af00 add r7, sp, #0 - 800383a: 6078 str r0, [r7, #4] - //Clear controller values - pid->integrator = 0.0f; - 800383c: 687b ldr r3, [r7, #4] - 800383e: 2200 movs r2, #0 - 8003840: 61da str r2, [r3, #28] - pid->prevError = 0.0f; - 8003842: 687b ldr r3, [r7, #4] - 8003844: 2200 movs r2, #0 - 8003846: 621a str r2, [r3, #32] - - pid->differentiator = 0.0f; - 8003848: 687b ldr r3, [r7, #4] - 800384a: 2200 movs r2, #0 - 800384c: 625a str r2, [r3, #36] ; 0x24 - pid->prevMeasurement = 0.0f; - 800384e: 687b ldr r3, [r7, #4] - 8003850: 2200 movs r2, #0 - 8003852: 629a str r2, [r3, #40] ; 0x28 - - pid->out = 0.0f; - 8003854: 687b ldr r3, [r7, #4] - 8003856: 2200 movs r2, #0 - 8003858: 62da str r2, [r3, #44] ; 0x2c -} - 800385a: 46c0 nop ; (mov r8, r8) - 800385c: 46bd mov sp, r7 - 800385e: b002 add sp, #8 - 8003860: bd80 pop {r7, pc} - -08003862 : - - -float PID_Update(PIDController *pid, float setpoint, float measurement) { - 8003862: b5b0 push {r4, r5, r7, lr} - 8003864: b088 sub sp, #32 - 8003866: af00 add r7, sp, #0 - 8003868: 60f8 str r0, [r7, #12] - 800386a: 60b9 str r1, [r7, #8] - 800386c: 607a str r2, [r7, #4] - // d[n] = 2*Kd/(2*tau+T) * (e[n]-e[n-1]) + (2*tau-T)/(2*tau+T) * d[n-1] - // PID = p[n]+i[n]+d[n] - - - //Error signal - float error = setpoint - measurement; - 800386e: 6879 ldr r1, [r7, #4] - 8003870: 68b8 ldr r0, [r7, #8] - 8003872: f7fd faaf bl 8000dd4 <__aeabi_fsub> - 8003876: 1c03 adds r3, r0, #0 - 8003878: 617b str r3, [r7, #20] - - //Proportional - float proportional = pid->Kp * error; - 800387a: 68fb ldr r3, [r7, #12] - 800387c: 681b ldr r3, [r3, #0] - 800387e: 1c19 adds r1, r3, #0 - 8003880: 6978 ldr r0, [r7, #20] - 8003882: f7fd f981 bl 8000b88 <__aeabi_fmul> - 8003886: 1c03 adds r3, r0, #0 - 8003888: 613b str r3, [r7, #16] - - //Integral - pid->integrator += 0.5f * pid->Ki * pid->T * (error + pid->prevError); - 800388a: 68fb ldr r3, [r7, #12] - 800388c: 69dc ldr r4, [r3, #28] - 800388e: 68fb ldr r3, [r7, #12] - 8003890: 685b ldr r3, [r3, #4] - 8003892: 21fc movs r1, #252 ; 0xfc - 8003894: 0589 lsls r1, r1, #22 - 8003896: 1c18 adds r0, r3, #0 - 8003898: f7fd f976 bl 8000b88 <__aeabi_fmul> - 800389c: 1c03 adds r3, r0, #0 - 800389e: 1c1a adds r2, r3, #0 - 80038a0: 68fb ldr r3, [r7, #12] - 80038a2: 699b ldr r3, [r3, #24] - 80038a4: 1c19 adds r1, r3, #0 - 80038a6: 1c10 adds r0, r2, #0 - 80038a8: f7fd f96e bl 8000b88 <__aeabi_fmul> - 80038ac: 1c03 adds r3, r0, #0 - 80038ae: 1c1d adds r5, r3, #0 - 80038b0: 68fb ldr r3, [r7, #12] - 80038b2: 6a1b ldr r3, [r3, #32] - 80038b4: 6979 ldr r1, [r7, #20] - 80038b6: 1c18 adds r0, r3, #0 - 80038b8: f7fc fe00 bl 80004bc <__aeabi_fadd> - 80038bc: 1c03 adds r3, r0, #0 - 80038be: 1c19 adds r1, r3, #0 - 80038c0: 1c28 adds r0, r5, #0 - 80038c2: f7fd f961 bl 8000b88 <__aeabi_fmul> - 80038c6: 1c03 adds r3, r0, #0 - 80038c8: 1c19 adds r1, r3, #0 - 80038ca: 1c20 adds r0, r4, #0 - 80038cc: f7fc fdf6 bl 80004bc <__aeabi_fadd> - 80038d0: 1c03 adds r3, r0, #0 - 80038d2: 1c1a adds r2, r3, #0 - 80038d4: 68fb ldr r3, [r7, #12] - 80038d6: 61da str r2, [r3, #28] - - //Anti-wind-up via dynamic integrator clamping - float limMinInt, limMaxInt; - - //Compute integrator limits - if (pid->limMax > proportional) { - 80038d8: 68fb ldr r3, [r7, #12] - 80038da: 695b ldr r3, [r3, #20] - 80038dc: 1c19 adds r1, r3, #0 - 80038de: 6938 ldr r0, [r7, #16] - 80038e0: f7fc fdac bl 800043c <__aeabi_fcmplt> - 80038e4: 1e03 subs r3, r0, #0 - 80038e6: d008 beq.n 80038fa - limMaxInt = pid->limMax - proportional; - 80038e8: 68fb ldr r3, [r7, #12] - 80038ea: 695b ldr r3, [r3, #20] - 80038ec: 6939 ldr r1, [r7, #16] - 80038ee: 1c18 adds r0, r3, #0 - 80038f0: f7fd fa70 bl 8000dd4 <__aeabi_fsub> - 80038f4: 1c03 adds r3, r0, #0 - 80038f6: 61bb str r3, [r7, #24] - 80038f8: e001 b.n 80038fe - } else { - limMaxInt = 0.0f; - 80038fa: 2300 movs r3, #0 - 80038fc: 61bb str r3, [r7, #24] - } - if (pid->limMin < proportional) { - 80038fe: 68fb ldr r3, [r7, #12] - 8003900: 691b ldr r3, [r3, #16] - 8003902: 1c19 adds r1, r3, #0 - 8003904: 6938 ldr r0, [r7, #16] - 8003906: f7fc fdad bl 8000464 <__aeabi_fcmpgt> - 800390a: 1e03 subs r3, r0, #0 - 800390c: d008 beq.n 8003920 - limMinInt = pid->limMin - proportional; - 800390e: 68fb ldr r3, [r7, #12] - 8003910: 691b ldr r3, [r3, #16] - 8003912: 6939 ldr r1, [r7, #16] - 8003914: 1c18 adds r0, r3, #0 - 8003916: f7fd fa5d bl 8000dd4 <__aeabi_fsub> - 800391a: 1c03 adds r3, r0, #0 - 800391c: 61fb str r3, [r7, #28] - 800391e: e001 b.n 8003924 - } else { - limMinInt = 0.0f; - 8003920: 2300 movs r3, #0 - 8003922: 61fb str r3, [r7, #28] - } - - //Clamp integrator - if (pid->integrator > limMaxInt) { - 8003924: 68fb ldr r3, [r7, #12] - 8003926: 69db ldr r3, [r3, #28] - 8003928: 1c19 adds r1, r3, #0 - 800392a: 69b8 ldr r0, [r7, #24] - 800392c: f7fc fd86 bl 800043c <__aeabi_fcmplt> - 8003930: 1e03 subs r3, r0, #0 - 8003932: d003 beq.n 800393c - pid->integrator = limMaxInt; - 8003934: 68fb ldr r3, [r7, #12] - 8003936: 69ba ldr r2, [r7, #24] - 8003938: 61da str r2, [r3, #28] - 800393a: e00a b.n 8003952 - } else if (pid->integrator < limMinInt) { - 800393c: 68fb ldr r3, [r7, #12] - 800393e: 69db ldr r3, [r3, #28] - 8003940: 1c19 adds r1, r3, #0 - 8003942: 69f8 ldr r0, [r7, #28] - 8003944: f7fc fd8e bl 8000464 <__aeabi_fcmpgt> - 8003948: 1e03 subs r3, r0, #0 - 800394a: d002 beq.n 8003952 - pid->integrator = limMinInt; - 800394c: 68fb ldr r3, [r7, #12] - 800394e: 69fa ldr r2, [r7, #28] - 8003950: 61da str r2, [r3, #28] - } - - //Derivative (band-limited differentiator) - pid->differentiator = (2.0f * pid->Kd * (measurement - pid->prevMeasurement) //Note: derivative on measurement - 8003952: 68fb ldr r3, [r7, #12] - 8003954: 689b ldr r3, [r3, #8] - 8003956: 1c19 adds r1, r3, #0 - 8003958: 1c18 adds r0, r3, #0 - 800395a: f7fc fdaf bl 80004bc <__aeabi_fadd> - 800395e: 1c03 adds r3, r0, #0 - 8003960: 1c1c adds r4, r3, #0 - 8003962: 68fb ldr r3, [r7, #12] - 8003964: 6a9b ldr r3, [r3, #40] ; 0x28 - 8003966: 1c19 adds r1, r3, #0 - 8003968: 6878 ldr r0, [r7, #4] - 800396a: f7fd fa33 bl 8000dd4 <__aeabi_fsub> - 800396e: 1c03 adds r3, r0, #0 - 8003970: 1c19 adds r1, r3, #0 - 8003972: 1c20 adds r0, r4, #0 - 8003974: f7fd f908 bl 8000b88 <__aeabi_fmul> - 8003978: 1c03 adds r3, r0, #0 - 800397a: 1c1c adds r4, r3, #0 - + (2.0f * pid->tau - pid->T) * pid->differentiator) - 800397c: 68fb ldr r3, [r7, #12] - 800397e: 68db ldr r3, [r3, #12] - 8003980: 1c19 adds r1, r3, #0 - 8003982: 1c18 adds r0, r3, #0 - 8003984: f7fc fd9a bl 80004bc <__aeabi_fadd> - 8003988: 1c03 adds r3, r0, #0 - 800398a: 1c1a adds r2, r3, #0 - 800398c: 68fb ldr r3, [r7, #12] - 800398e: 699b ldr r3, [r3, #24] - 8003990: 1c19 adds r1, r3, #0 - 8003992: 1c10 adds r0, r2, #0 - 8003994: f7fd fa1e bl 8000dd4 <__aeabi_fsub> - 8003998: 1c03 adds r3, r0, #0 - 800399a: 1c1a adds r2, r3, #0 - 800399c: 68fb ldr r3, [r7, #12] - 800399e: 6a5b ldr r3, [r3, #36] ; 0x24 - 80039a0: 1c19 adds r1, r3, #0 - 80039a2: 1c10 adds r0, r2, #0 - 80039a4: f7fd f8f0 bl 8000b88 <__aeabi_fmul> - 80039a8: 1c03 adds r3, r0, #0 - 80039aa: 1c19 adds r1, r3, #0 - 80039ac: 1c20 adds r0, r4, #0 - 80039ae: f7fc fd85 bl 80004bc <__aeabi_fadd> - 80039b2: 1c03 adds r3, r0, #0 - 80039b4: 1c1c adds r4, r3, #0 - / (2.0f * pid->tau + pid->T); - 80039b6: 68fb ldr r3, [r7, #12] - 80039b8: 68db ldr r3, [r3, #12] - 80039ba: 1c19 adds r1, r3, #0 - 80039bc: 1c18 adds r0, r3, #0 - 80039be: f7fc fd7d bl 80004bc <__aeabi_fadd> - 80039c2: 1c03 adds r3, r0, #0 - 80039c4: 1c1a adds r2, r3, #0 - 80039c6: 68fb ldr r3, [r7, #12] - 80039c8: 699b ldr r3, [r3, #24] - 80039ca: 1c19 adds r1, r3, #0 - 80039cc: 1c10 adds r0, r2, #0 - 80039ce: f7fc fd75 bl 80004bc <__aeabi_fadd> - 80039d2: 1c03 adds r3, r0, #0 - 80039d4: 1c19 adds r1, r3, #0 - 80039d6: 1c20 adds r0, r4, #0 - 80039d8: f7fc ff0e bl 80007f8 <__aeabi_fdiv> - 80039dc: 1c03 adds r3, r0, #0 - 80039de: 1c1a adds r2, r3, #0 - pid->differentiator = (2.0f * pid->Kd * (measurement - pid->prevMeasurement) //Note: derivative on measurement - 80039e0: 68fb ldr r3, [r7, #12] - 80039e2: 625a str r2, [r3, #36] ; 0x24 - - //Compute output and apply limits - pid->out = proportional + pid->integrator + pid->differentiator; - 80039e4: 68fb ldr r3, [r7, #12] - 80039e6: 69db ldr r3, [r3, #28] - 80039e8: 6939 ldr r1, [r7, #16] - 80039ea: 1c18 adds r0, r3, #0 - 80039ec: f7fc fd66 bl 80004bc <__aeabi_fadd> - 80039f0: 1c03 adds r3, r0, #0 - 80039f2: 1c1a adds r2, r3, #0 - 80039f4: 68fb ldr r3, [r7, #12] - 80039f6: 6a5b ldr r3, [r3, #36] ; 0x24 - 80039f8: 1c19 adds r1, r3, #0 - 80039fa: 1c10 adds r0, r2, #0 - 80039fc: f7fc fd5e bl 80004bc <__aeabi_fadd> - 8003a00: 1c03 adds r3, r0, #0 - 8003a02: 1c1a adds r2, r3, #0 - 8003a04: 68fb ldr r3, [r7, #12] - 8003a06: 62da str r2, [r3, #44] ; 0x2c - if (pid->out > pid->limMax) { - 8003a08: 68fb ldr r3, [r7, #12] - 8003a0a: 6ada ldr r2, [r3, #44] ; 0x2c - 8003a0c: 68fb ldr r3, [r7, #12] - 8003a0e: 695b ldr r3, [r3, #20] - 8003a10: 1c19 adds r1, r3, #0 - 8003a12: 1c10 adds r0, r2, #0 - 8003a14: f7fc fd26 bl 8000464 <__aeabi_fcmpgt> - 8003a18: 1e03 subs r3, r0, #0 - 8003a1a: d004 beq.n 8003a26 - pid->out = pid->limMax; - 8003a1c: 68fb ldr r3, [r7, #12] - 8003a1e: 695a ldr r2, [r3, #20] - 8003a20: 68fb ldr r3, [r7, #12] - 8003a22: 62da str r2, [r3, #44] ; 0x2c - 8003a24: e00d b.n 8003a42 - } else if (pid->out < pid->limMin) { - 8003a26: 68fb ldr r3, [r7, #12] - 8003a28: 6ada ldr r2, [r3, #44] ; 0x2c - 8003a2a: 68fb ldr r3, [r7, #12] - 8003a2c: 691b ldr r3, [r3, #16] - 8003a2e: 1c19 adds r1, r3, #0 - 8003a30: 1c10 adds r0, r2, #0 - 8003a32: f7fc fd03 bl 800043c <__aeabi_fcmplt> - 8003a36: 1e03 subs r3, r0, #0 - 8003a38: d003 beq.n 8003a42 - pid->out = pid->limMin; - 8003a3a: 68fb ldr r3, [r7, #12] - 8003a3c: 691a ldr r2, [r3, #16] - 8003a3e: 68fb ldr r3, [r7, #12] - 8003a40: 62da str r2, [r3, #44] ; 0x2c - } - - //Store error and measurement for later use - pid->prevError = error; - 8003a42: 68fb ldr r3, [r7, #12] - 8003a44: 697a ldr r2, [r7, #20] - 8003a46: 621a str r2, [r3, #32] - pid->prevMeasurement = measurement; - 8003a48: 68fb ldr r3, [r7, #12] - 8003a4a: 687a ldr r2, [r7, #4] - 8003a4c: 629a str r2, [r3, #40] ; 0x28 - - //Return controller output - return pid->out; - 8003a4e: 68fb ldr r3, [r7, #12] - 8003a50: 6adb ldr r3, [r3, #44] ; 0x2c - -} - 8003a52: 1c18 adds r0, r3, #0 - 8003a54: 46bd mov sp, r7 - 8003a56: b008 add sp, #32 - 8003a58: bdb0 pop {r4, r5, r7, pc} - ... - -08003a5c : - -SPI_HandleTypeDef hspi2; - -/* SPI2 init function */ -void MX_SPI2_Init(void) -{ - 8003a5c: b580 push {r7, lr} - 8003a5e: af00 add r7, sp, #0 - /* USER CODE END SPI2_Init 0 */ - - /* USER CODE BEGIN SPI2_Init 1 */ - - /* USER CODE END SPI2_Init 1 */ - hspi2.Instance = SPI2; - 8003a60: 4b1c ldr r3, [pc, #112] ; (8003ad4 ) - 8003a62: 4a1d ldr r2, [pc, #116] ; (8003ad8 ) - 8003a64: 601a str r2, [r3, #0] - hspi2.Init.Mode = SPI_MODE_MASTER; - 8003a66: 4b1b ldr r3, [pc, #108] ; (8003ad4 ) - 8003a68: 2282 movs r2, #130 ; 0x82 - 8003a6a: 0052 lsls r2, r2, #1 - 8003a6c: 605a str r2, [r3, #4] - hspi2.Init.Direction = SPI_DIRECTION_2LINES_RXONLY; - 8003a6e: 4b19 ldr r3, [pc, #100] ; (8003ad4 ) - 8003a70: 2280 movs r2, #128 ; 0x80 - 8003a72: 00d2 lsls r2, r2, #3 - 8003a74: 609a str r2, [r3, #8] - hspi2.Init.DataSize = SPI_DATASIZE_8BIT; - 8003a76: 4b17 ldr r3, [pc, #92] ; (8003ad4 ) - 8003a78: 22e0 movs r2, #224 ; 0xe0 - 8003a7a: 00d2 lsls r2, r2, #3 - 8003a7c: 60da str r2, [r3, #12] - hspi2.Init.CLKPolarity = SPI_POLARITY_LOW; - 8003a7e: 4b15 ldr r3, [pc, #84] ; (8003ad4 ) - 8003a80: 2200 movs r2, #0 - 8003a82: 611a str r2, [r3, #16] - hspi2.Init.CLKPhase = SPI_PHASE_1EDGE; - 8003a84: 4b13 ldr r3, [pc, #76] ; (8003ad4 ) - 8003a86: 2200 movs r2, #0 - 8003a88: 615a str r2, [r3, #20] - hspi2.Init.NSS = SPI_NSS_SOFT; - 8003a8a: 4b12 ldr r3, [pc, #72] ; (8003ad4 ) - 8003a8c: 2280 movs r2, #128 ; 0x80 - 8003a8e: 0092 lsls r2, r2, #2 - 8003a90: 619a str r2, [r3, #24] - hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; - 8003a92: 4b10 ldr r3, [pc, #64] ; (8003ad4 ) - 8003a94: 2218 movs r2, #24 - 8003a96: 61da str r2, [r3, #28] - hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB; - 8003a98: 4b0e ldr r3, [pc, #56] ; (8003ad4 ) - 8003a9a: 2200 movs r2, #0 - 8003a9c: 621a str r2, [r3, #32] - hspi2.Init.TIMode = SPI_TIMODE_DISABLE; - 8003a9e: 4b0d ldr r3, [pc, #52] ; (8003ad4 ) - 8003aa0: 2200 movs r2, #0 - 8003aa2: 625a str r2, [r3, #36] ; 0x24 - hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 8003aa4: 4b0b ldr r3, [pc, #44] ; (8003ad4 ) - 8003aa6: 2200 movs r2, #0 - 8003aa8: 629a str r2, [r3, #40] ; 0x28 - hspi2.Init.CRCPolynomial = 7; - 8003aaa: 4b0a ldr r3, [pc, #40] ; (8003ad4 ) - 8003aac: 2207 movs r2, #7 - 8003aae: 62da str r2, [r3, #44] ; 0x2c - hspi2.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; - 8003ab0: 4b08 ldr r3, [pc, #32] ; (8003ad4 ) - 8003ab2: 2200 movs r2, #0 - 8003ab4: 631a str r2, [r3, #48] ; 0x30 - hspi2.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; - 8003ab6: 4b07 ldr r3, [pc, #28] ; (8003ad4 ) - 8003ab8: 2208 movs r2, #8 - 8003aba: 635a str r2, [r3, #52] ; 0x34 - if (HAL_SPI_Init(&hspi2) != HAL_OK) - 8003abc: 4b05 ldr r3, [pc, #20] ; (8003ad4 ) - 8003abe: 0018 movs r0, r3 - 8003ac0: f004 fd34 bl 800852c - 8003ac4: 1e03 subs r3, r0, #0 - 8003ac6: d001 beq.n 8003acc - { - Error_Handler(); - 8003ac8: f7ff fe5a bl 8003780 - } - /* USER CODE BEGIN SPI2_Init 2 */ - - /* USER CODE END SPI2_Init 2 */ - -} - 8003acc: 46c0 nop ; (mov r8, r8) - 8003ace: 46bd mov sp, r7 - 8003ad0: bd80 pop {r7, pc} - 8003ad2: 46c0 nop ; (mov r8, r8) - 8003ad4: 200001ac .word 0x200001ac - 8003ad8: 40003800 .word 0x40003800 - -08003adc : - -void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) -{ - 8003adc: b590 push {r4, r7, lr} - 8003ade: b08b sub sp, #44 ; 0x2c - 8003ae0: af00 add r7, sp, #0 - 8003ae2: 6078 str r0, [r7, #4] - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8003ae4: 2414 movs r4, #20 - 8003ae6: 193b adds r3, r7, r4 - 8003ae8: 0018 movs r0, r3 - 8003aea: 2314 movs r3, #20 - 8003aec: 001a movs r2, r3 - 8003aee: 2100 movs r1, #0 - 8003af0: f00b f88d bl 800ec0e - if(spiHandle->Instance==SPI2) - 8003af4: 687b ldr r3, [r7, #4] - 8003af6: 681b ldr r3, [r3, #0] - 8003af8: 4a1b ldr r2, [pc, #108] ; (8003b68 ) - 8003afa: 4293 cmp r3, r2 - 8003afc: d130 bne.n 8003b60 - { - /* USER CODE BEGIN SPI2_MspInit 0 */ - - /* USER CODE END SPI2_MspInit 0 */ - /* SPI2 clock enable */ - __HAL_RCC_SPI2_CLK_ENABLE(); - 8003afe: 4b1b ldr r3, [pc, #108] ; (8003b6c ) - 8003b00: 6bda ldr r2, [r3, #60] ; 0x3c - 8003b02: 4b1a ldr r3, [pc, #104] ; (8003b6c ) - 8003b04: 2180 movs r1, #128 ; 0x80 - 8003b06: 01c9 lsls r1, r1, #7 - 8003b08: 430a orrs r2, r1 - 8003b0a: 63da str r2, [r3, #60] ; 0x3c - 8003b0c: 4b17 ldr r3, [pc, #92] ; (8003b6c ) - 8003b0e: 6bda ldr r2, [r3, #60] ; 0x3c - 8003b10: 2380 movs r3, #128 ; 0x80 - 8003b12: 01db lsls r3, r3, #7 - 8003b14: 4013 ands r3, r2 - 8003b16: 613b str r3, [r7, #16] - 8003b18: 693b ldr r3, [r7, #16] - - __HAL_RCC_GPIOB_CLK_ENABLE(); - 8003b1a: 4b14 ldr r3, [pc, #80] ; (8003b6c ) - 8003b1c: 6b5a ldr r2, [r3, #52] ; 0x34 - 8003b1e: 4b13 ldr r3, [pc, #76] ; (8003b6c ) - 8003b20: 2102 movs r1, #2 - 8003b22: 430a orrs r2, r1 - 8003b24: 635a str r2, [r3, #52] ; 0x34 - 8003b26: 4b11 ldr r3, [pc, #68] ; (8003b6c ) - 8003b28: 6b5b ldr r3, [r3, #52] ; 0x34 - 8003b2a: 2202 movs r2, #2 - 8003b2c: 4013 ands r3, r2 - 8003b2e: 60fb str r3, [r7, #12] - 8003b30: 68fb ldr r3, [r7, #12] - /**SPI2 GPIO Configuration - PB13 ------> SPI2_SCK - PB14 ------> SPI2_MISO - */ - GPIO_InitStruct.Pin = MAX_SCK_Pin|MAX_MISO_Pin; - 8003b32: 193b adds r3, r7, r4 - 8003b34: 22c0 movs r2, #192 ; 0xc0 - 8003b36: 01d2 lsls r2, r2, #7 - 8003b38: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8003b3a: 0021 movs r1, r4 - 8003b3c: 187b adds r3, r7, r1 - 8003b3e: 2202 movs r2, #2 - 8003b40: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8003b42: 187b adds r3, r7, r1 - 8003b44: 2200 movs r2, #0 - 8003b46: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8003b48: 187b adds r3, r7, r1 - 8003b4a: 2200 movs r2, #0 - 8003b4c: 60da str r2, [r3, #12] - GPIO_InitStruct.Alternate = GPIO_AF0_SPI2; - 8003b4e: 187b adds r3, r7, r1 - 8003b50: 2200 movs r2, #0 - 8003b52: 611a str r2, [r3, #16] - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8003b54: 187b adds r3, r7, r1 - 8003b56: 4a06 ldr r2, [pc, #24] ; (8003b70 ) - 8003b58: 0019 movs r1, r3 - 8003b5a: 0010 movs r0, r2 - 8003b5c: f003 fd02 bl 8007564 - - /* USER CODE BEGIN SPI2_MspInit 1 */ - - /* USER CODE END SPI2_MspInit 1 */ - } -} - 8003b60: 46c0 nop ; (mov r8, r8) - 8003b62: 46bd mov sp, r7 - 8003b64: b00b add sp, #44 ; 0x2c - 8003b66: bd90 pop {r4, r7, pc} - 8003b68: 40003800 .word 0x40003800 - 8003b6c: 40021000 .word 0x40021000 - 8003b70: 50000400 .word 0x50000400 - -08003b74 : -}; - - -#ifndef __delay_us -#define __delay_us -void delay_us(volatile unsigned long nTime) { - 8003b74: b580 push {r7, lr} - 8003b76: b082 sub sp, #8 - 8003b78: af00 add r7, sp, #0 - 8003b7a: 6078 str r0, [r7, #4] - nTime=nTime<<2; - 8003b7c: 687b ldr r3, [r7, #4] - 8003b7e: 009b lsls r3, r3, #2 - 8003b80: 607b str r3, [r7, #4] - while(nTime != 0) { - 8003b82: e008 b.n 8003b96 - nTime--; - 8003b84: 687b ldr r3, [r7, #4] - 8003b86: 3b01 subs r3, #1 - 8003b88: 607b str r3, [r7, #4] - nTime++; - 8003b8a: 687b ldr r3, [r7, #4] - 8003b8c: 3301 adds r3, #1 - 8003b8e: 607b str r3, [r7, #4] - nTime--; - 8003b90: 687b ldr r3, [r7, #4] - 8003b92: 3b01 subs r3, #1 - 8003b94: 607b str r3, [r7, #4] - while(nTime != 0) { - 8003b96: 687b ldr r3, [r7, #4] - 8003b98: 2b00 cmp r3, #0 - 8003b9a: d1f3 bne.n 8003b84 - } -} - 8003b9c: 46c0 nop ; (mov r8, r8) - 8003b9e: 46c0 nop ; (mov r8, r8) - 8003ba0: 46bd mov sp, r7 - 8003ba2: b002 add sp, #8 - 8003ba4: bd80 pop {r7, pc} - -08003ba6 : -#endif - - -//Set Data bus pins to output -void ST7793_SetDWrite(void) { - 8003ba6: b580 push {r7, lr} - 8003ba8: b086 sub sp, #24 - 8003baa: af00 add r7, sp, #0 - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8003bac: 1d3b adds r3, r7, #4 - 8003bae: 0018 movs r0, r3 - 8003bb0: 2314 movs r3, #20 - 8003bb2: 001a movs r2, r3 - 8003bb4: 2100 movs r1, #0 - 8003bb6: f00b f82a bl 800ec0e - - GPIO_InitStruct.Pin = (0xFF< -} - 8003be0: 46c0 nop ; (mov r8, r8) - 8003be2: 46bd mov sp, r7 - 8003be4: b006 add sp, #24 - 8003be6: bd80 pop {r7, pc} - -08003be8 : - -//Set Data bus pins to input -void ST7793_SetDRead(void) { - 8003be8: b580 push {r7, lr} - 8003bea: b086 sub sp, #24 - 8003bec: af00 add r7, sp, #0 - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8003bee: 1d3b adds r3, r7, #4 - 8003bf0: 0018 movs r0, r3 - 8003bf2: 2314 movs r3, #20 - 8003bf4: 001a movs r2, r3 - 8003bf6: 2100 movs r1, #0 - 8003bf8: f00b f809 bl 800ec0e - - GPIO_InitStruct.Pin = (0xFF< -} - 8003c22: 46c0 nop ; (mov r8, r8) - 8003c24: 46bd mov sp, r7 - 8003c26: b006 add sp, #24 - 8003c28: bd80 pop {r7, pc} - ... - -08003c2c : - -//Set data on the TFT data bus -void ST7793_Write8(uint16_t data) { - 8003c2c: b580 push {r7, lr} - 8003c2e: b082 sub sp, #8 - 8003c30: af00 add r7, sp, #0 - 8003c32: 0002 movs r2, r0 - 8003c34: 1dbb adds r3, r7, #6 - 8003c36: 801a strh r2, [r3, #0] - ST7793_DPort->ODR &= ~(0x00FF << ST7793_DShift); - 8003c38: 23a0 movs r3, #160 ; 0xa0 - 8003c3a: 05db lsls r3, r3, #23 - 8003c3c: 695a ldr r2, [r3, #20] - 8003c3e: 23a0 movs r3, #160 ; 0xa0 - 8003c40: 05db lsls r3, r3, #23 - 8003c42: 21ff movs r1, #255 ; 0xff - 8003c44: 438a bics r2, r1 - 8003c46: 615a str r2, [r3, #20] - ST7793_DPort->ODR |= ((0x00FF & data) << ST7793_DShift); - 8003c48: 23a0 movs r3, #160 ; 0xa0 - 8003c4a: 05db lsls r3, r3, #23 - 8003c4c: 6959 ldr r1, [r3, #20] - 8003c4e: 1dbb adds r3, r7, #6 - 8003c50: 881b ldrh r3, [r3, #0] - 8003c52: 22ff movs r2, #255 ; 0xff - 8003c54: 401a ands r2, r3 - 8003c56: 23a0 movs r3, #160 ; 0xa0 - 8003c58: 05db lsls r3, r3, #23 - 8003c5a: 430a orrs r2, r1 - 8003c5c: 615a str r2, [r3, #20] - ST7793_WR_PULSE; //Pulse on the WR pin - 8003c5e: 4b08 ldr r3, [pc, #32] ; (8003c80 ) - 8003c60: 2200 movs r2, #0 - 8003c62: 2102 movs r1, #2 - 8003c64: 0018 movs r0, r3 - 8003c66: f003 fde1 bl 800782c - 8003c6a: 4b05 ldr r3, [pc, #20] ; (8003c80 ) - 8003c6c: 2201 movs r2, #1 - 8003c6e: 2102 movs r1, #2 - 8003c70: 0018 movs r0, r3 - 8003c72: f003 fddb bl 800782c -} - 8003c76: 46c0 nop ; (mov r8, r8) - 8003c78: 46bd mov sp, r7 - 8003c7a: b002 add sp, #8 - 8003c7c: bd80 pop {r7, pc} - 8003c7e: 46c0 nop ; (mov r8, r8) - 8003c80: 50000400 .word 0x50000400 - -08003c84 : - -//Read data from the TFT data bus -uint16_t ST7793_Read16() { - 8003c84: b580 push {r7, lr} - 8003c86: b082 sub sp, #8 - 8003c88: af00 add r7, sp, #0 - uint16_t data; - - ST7793_RD_ON; //Activate RD pin - 8003c8a: 4b1c ldr r3, [pc, #112] ; (8003cfc ) - 8003c8c: 2200 movs r2, #0 - 8003c8e: 2110 movs r1, #16 - 8003c90: 0018 movs r0, r3 - 8003c92: f003 fdcb bl 800782c - delay_us(1); //wait a bit - 8003c96: 2001 movs r0, #1 - 8003c98: f7ff ff6c bl 8003b74 - data = ((ST7793_DPort->IDR >> ST7793_DShift) & 0x00FF) << 8; //Get 8 MSB of data - 8003c9c: 23a0 movs r3, #160 ; 0xa0 - 8003c9e: 05db lsls r3, r3, #23 - 8003ca0: 691b ldr r3, [r3, #16] - 8003ca2: b29a uxth r2, r3 - 8003ca4: 1dbb adds r3, r7, #6 - 8003ca6: 0212 lsls r2, r2, #8 - 8003ca8: 801a strh r2, [r3, #0] - ST7793_RD_OFF; //Deactivate RD pin - 8003caa: 4b14 ldr r3, [pc, #80] ; (8003cfc ) - 8003cac: 2201 movs r2, #1 - 8003cae: 2110 movs r1, #16 - 8003cb0: 0018 movs r0, r3 - 8003cb2: f003 fdbb bl 800782c - delay_us(1); //wait a bit - 8003cb6: 2001 movs r0, #1 - 8003cb8: f7ff ff5c bl 8003b74 - ST7793_RD_ON; //Activate RD pin - 8003cbc: 4b0f ldr r3, [pc, #60] ; (8003cfc ) - 8003cbe: 2200 movs r2, #0 - 8003cc0: 2110 movs r1, #16 - 8003cc2: 0018 movs r0, r3 - 8003cc4: f003 fdb2 bl 800782c - delay_us(1); //wait a bit - 8003cc8: 2001 movs r0, #1 - 8003cca: f7ff ff53 bl 8003b74 - data |= (ST7793_DPort->IDR >> ST7793_DShift) & 0x00FF; //Get 8 LSB of data - 8003cce: 23a0 movs r3, #160 ; 0xa0 - 8003cd0: 05db lsls r3, r3, #23 - 8003cd2: 691b ldr r3, [r3, #16] - 8003cd4: 22ff movs r2, #255 ; 0xff - 8003cd6: 4013 ands r3, r2 - 8003cd8: b299 uxth r1, r3 - 8003cda: 1dbb adds r3, r7, #6 - 8003cdc: 1dba adds r2, r7, #6 - 8003cde: 8812 ldrh r2, [r2, #0] - 8003ce0: 430a orrs r2, r1 - 8003ce2: 801a strh r2, [r3, #0] - ST7793_RD_OFF; //Deactivate RD pin - 8003ce4: 4b05 ldr r3, [pc, #20] ; (8003cfc ) - 8003ce6: 2201 movs r2, #1 - 8003ce8: 2110 movs r1, #16 - 8003cea: 0018 movs r0, r3 - 8003cec: f003 fd9e bl 800782c - return data; - 8003cf0: 1dbb adds r3, r7, #6 - 8003cf2: 881b ldrh r3, [r3, #0] -} - 8003cf4: 0018 movs r0, r3 - 8003cf6: 46bd mov sp, r7 - 8003cf8: b002 add sp, #8 - 8003cfa: bd80 pop {r7, pc} - 8003cfc: 50000800 .word 0x50000800 - -08003d00 : - -//Send data -void ST7793_SendData(uint16_t data) { - 8003d00: b580 push {r7, lr} - 8003d02: b082 sub sp, #8 - 8003d04: af00 add r7, sp, #0 - 8003d06: 0002 movs r2, r0 - 8003d08: 1dbb adds r3, r7, #6 - 8003d0a: 801a strh r2, [r3, #0] - ST7793_DATA; //RS pin to data mode - 8003d0c: 4b0a ldr r3, [pc, #40] ; (8003d38 ) - 8003d0e: 2201 movs r2, #1 - 8003d10: 2101 movs r1, #1 - 8003d12: 0018 movs r0, r3 - 8003d14: f003 fd8a bl 800782c - ST7793_Write8(data >> 8); //Send data 8MSB - 8003d18: 1dbb adds r3, r7, #6 - 8003d1a: 881b ldrh r3, [r3, #0] - 8003d1c: 0a1b lsrs r3, r3, #8 - 8003d1e: b29b uxth r3, r3 - 8003d20: 0018 movs r0, r3 - 8003d22: f7ff ff83 bl 8003c2c - ST7793_Write8(data); //Send data 8LSB - 8003d26: 1dbb adds r3, r7, #6 - 8003d28: 881b ldrh r3, [r3, #0] - 8003d2a: 0018 movs r0, r3 - 8003d2c: f7ff ff7e bl 8003c2c -} - 8003d30: 46c0 nop ; (mov r8, r8) - 8003d32: 46bd mov sp, r7 - 8003d34: b002 add sp, #8 - 8003d36: bd80 pop {r7, pc} - 8003d38: 50000400 .word 0x50000400 - -08003d3c : - -//Send a command. Register index and data to fill it with -void ST7793_SendCommand(uint16_t index, uint16_t data) { - 8003d3c: b580 push {r7, lr} - 8003d3e: b082 sub sp, #8 - 8003d40: af00 add r7, sp, #0 - 8003d42: 0002 movs r2, r0 - 8003d44: 1dbb adds r3, r7, #6 - 8003d46: 801a strh r2, [r3, #0] - 8003d48: 1d3b adds r3, r7, #4 - 8003d4a: 1c0a adds r2, r1, #0 - 8003d4c: 801a strh r2, [r3, #0] - ST7793_COMMAND; //RS pin to command mode - 8003d4e: 4b0d ldr r3, [pc, #52] ; (8003d84 ) - 8003d50: 2200 movs r2, #0 - 8003d52: 2101 movs r1, #1 - 8003d54: 0018 movs r0, r3 - 8003d56: f003 fd69 bl 800782c - ST7793_Write8(index >> 8); //Send command code 8MSB - 8003d5a: 1dbb adds r3, r7, #6 - 8003d5c: 881b ldrh r3, [r3, #0] - 8003d5e: 0a1b lsrs r3, r3, #8 - 8003d60: b29b uxth r3, r3 - 8003d62: 0018 movs r0, r3 - 8003d64: f7ff ff62 bl 8003c2c - ST7793_Write8(index); //Send command code 8LSB - 8003d68: 1dbb adds r3, r7, #6 - 8003d6a: 881b ldrh r3, [r3, #0] - 8003d6c: 0018 movs r0, r3 - 8003d6e: f7ff ff5d bl 8003c2c - - ST7793_SendData(data); - 8003d72: 1d3b adds r3, r7, #4 - 8003d74: 881b ldrh r3, [r3, #0] - 8003d76: 0018 movs r0, r3 - 8003d78: f7ff ffc2 bl 8003d00 -} - 8003d7c: 46c0 nop ; (mov r8, r8) - 8003d7e: 46bd mov sp, r7 - 8003d80: b002 add sp, #8 - 8003d82: bd80 pop {r7, pc} - 8003d84: 50000400 .word 0x50000400 - -08003d88 : - -//Read data from a register -uint16_t ST7793_ReadReg(uint16_t index) { - 8003d88: b5b0 push {r4, r5, r7, lr} - 8003d8a: b084 sub sp, #16 - 8003d8c: af00 add r7, sp, #0 - 8003d8e: 0002 movs r2, r0 - 8003d90: 1dbb adds r3, r7, #6 - 8003d92: 801a strh r2, [r3, #0] - uint16_t data; - - ST7793_COMMAND; //RS pin to command mode - 8003d94: 4b15 ldr r3, [pc, #84] ; (8003dec ) - 8003d96: 2200 movs r2, #0 - 8003d98: 2101 movs r1, #1 - 8003d9a: 0018 movs r0, r3 - 8003d9c: f003 fd46 bl 800782c - ST7793_Write8(index >> 8); //Send command code 8MSB - 8003da0: 1dbb adds r3, r7, #6 - 8003da2: 881b ldrh r3, [r3, #0] - 8003da4: 0a1b lsrs r3, r3, #8 - 8003da6: b29b uxth r3, r3 - 8003da8: 0018 movs r0, r3 - 8003daa: f7ff ff3f bl 8003c2c - ST7793_Write8(index); //Send command code 8LSB - 8003dae: 1dbb adds r3, r7, #6 - 8003db0: 881b ldrh r3, [r3, #0] - 8003db2: 0018 movs r0, r3 - 8003db4: f7ff ff3a bl 8003c2c - delay_us(2); //wait a bit - 8003db8: 2002 movs r0, #2 - 8003dba: f7ff fedb bl 8003b74 - - ST7793_DATA; //RS pin to data mode - 8003dbe: 4b0b ldr r3, [pc, #44] ; (8003dec ) - 8003dc0: 2201 movs r2, #1 - 8003dc2: 2101 movs r1, #1 - 8003dc4: 0018 movs r0, r3 - 8003dc6: f003 fd31 bl 800782c - ST7793_SetDRead(); //Set data bus mode to input - 8003dca: f7ff ff0d bl 8003be8 - data = ST7793_Read16(); //Read data from the data bus - 8003dce: 250e movs r5, #14 - 8003dd0: 197c adds r4, r7, r5 - 8003dd2: f7ff ff57 bl 8003c84 - 8003dd6: 0003 movs r3, r0 - 8003dd8: 8023 strh r3, [r4, #0] - ST7793_SetDWrite(); //Set data bus mode to output - 8003dda: f7ff fee4 bl 8003ba6 - return data; - 8003dde: 197b adds r3, r7, r5 - 8003de0: 881b ldrh r3, [r3, #0] -} - 8003de2: 0018 movs r0, r3 - 8003de4: 46bd mov sp, r7 - 8003de6: b004 add sp, #16 - 8003de8: bdb0 pop {r4, r5, r7, pc} - 8003dea: 46c0 nop ; (mov r8, r8) - 8003dec: 50000400 .word 0x50000400 - -08003df0 : - -//Display reset -void ST7793_Reset(void) { - 8003df0: b580 push {r7, lr} - 8003df2: af00 add r7, sp, #0 - ST7793_CS_OFF; //Deactivate CS pin - 8003df4: 4b11 ldr r3, [pc, #68] ; (8003e3c ) - 8003df6: 2201 movs r2, #1 - 8003df8: 2110 movs r1, #16 - 8003dfa: 0018 movs r0, r3 - 8003dfc: f003 fd16 bl 800782c - ST7793_WR_OFF; //Deactivate WR pin - 8003e00: 4b0f ldr r3, [pc, #60] ; (8003e40 ) - 8003e02: 2201 movs r2, #1 - 8003e04: 2102 movs r1, #2 - 8003e06: 0018 movs r0, r3 - 8003e08: f003 fd10 bl 800782c - ST7793_RD_OFF; //Deactivate RD pin - 8003e0c: 4b0d ldr r3, [pc, #52] ; (8003e44 ) - 8003e0e: 2201 movs r2, #1 - 8003e10: 2110 movs r1, #16 - 8003e12: 0018 movs r0, r3 - 8003e14: f003 fd0a bl 800782c - - ST7793_RST_ON; //Activate RST pin - 8003e18: 4b0a ldr r3, [pc, #40] ; (8003e44 ) - 8003e1a: 2200 movs r2, #0 - 8003e1c: 2120 movs r1, #32 - 8003e1e: 0018 movs r0, r3 - 8003e20: f003 fd04 bl 800782c - HAL_Delay(2); //2ms delay for reset - 8003e24: 2002 movs r0, #2 - 8003e26: f002 fa25 bl 8006274 - ST7793_RST_OFF; //Deactivate RST pin - 8003e2a: 4b06 ldr r3, [pc, #24] ; (8003e44 ) - 8003e2c: 2201 movs r2, #1 - 8003e2e: 2120 movs r1, #32 - 8003e30: 0018 movs r0, r3 - 8003e32: f003 fcfb bl 800782c -} - 8003e36: 46c0 nop ; (mov r8, r8) - 8003e38: 46bd mov sp, r7 - 8003e3a: bd80 pop {r7, pc} - 8003e3c: 50000c00 .word 0x50000c00 - 8003e40: 50000400 .word 0x50000400 - 8003e44: 50000800 .word 0x50000800 - -08003e48 : - -//Display initialization -uint8_t ST7793_Init(void) { - 8003e48: b580 push {r7, lr} - 8003e4a: af00 add r7, sp, #0 - ST7793_CS_ON; //Activate CS pin - 8003e4c: 4b57 ldr r3, [pc, #348] ; (8003fac ) - 8003e4e: 2200 movs r2, #0 - 8003e50: 2110 movs r1, #16 - 8003e52: 0018 movs r0, r3 - 8003e54: f003 fcea bl 800782c - ST7793_SetDWrite(); //Set data bus mode to output - 8003e58: f7ff fea5 bl 8003ba6 - ST7793_Reset(); //Reset the device - 8003e5c: f7ff ffc8 bl 8003df0 - HAL_Delay(3); //3ms delay - 8003e60: 2003 movs r0, #3 - 8003e62: f002 fa07 bl 8006274 - ST7793_CS_ON; - 8003e66: 4b51 ldr r3, [pc, #324] ; (8003fac ) - 8003e68: 2200 movs r2, #0 - 8003e6a: 2110 movs r1, #16 - 8003e6c: 0018 movs r0, r3 - 8003e6e: f003 fcdd bl 800782c - if (ST7793_ReadReg(0x0000) != 0x7793) return 0x10; //Driver code register should be 0x7793 - 8003e72: 2000 movs r0, #0 - 8003e74: f7ff ff88 bl 8003d88 - 8003e78: 0003 movs r3, r0 - 8003e7a: 001a movs r2, r3 - 8003e7c: 4b4c ldr r3, [pc, #304] ; (8003fb0 ) - 8003e7e: 429a cmp r2, r3 - 8003e80: d001 beq.n 8003e86 - 8003e82: 2310 movs r3, #16 - 8003e84: e08f b.n 8003fa6 - - ST7793_SendCommand(0x0001, 0x0100); //Device Output Control 0x0000 for default - 8003e86: 2380 movs r3, #128 ; 0x80 - 8003e88: 005b lsls r3, r3, #1 - 8003e8a: 0019 movs r1, r3 - 8003e8c: 2001 movs r0, #1 - 8003e8e: f7ff ff55 bl 8003d3c - //ST7793_SendCommand(0x0003, 0x1000); - //ST7793_SendCommand(0x0003, 0x1010); - //ST7793_SendCommand(0x0003, 0x1020); - //ST7793_SendCommand(0x0003, 0x1030); - //ST7793_SendCommand(0x0003, 0x1038); - ST7793_SendCommand(0x0003, 0x1038); - 8003e92: 4b48 ldr r3, [pc, #288] ; (8003fb4 ) - 8003e94: 0019 movs r1, r3 - 8003e96: 2003 movs r0, #3 - 8003e98: f7ff ff50 bl 8003d3c - ST7793_SendCommand(0x0090, 0x8000); //Frame Marker Control 4. default is 0x0000 - 8003e9c: 2380 movs r3, #128 ; 0x80 - 8003e9e: 021b lsls r3, r3, #8 - 8003ea0: 0019 movs r1, r3 - 8003ea2: 2090 movs r0, #144 ; 0x90 - 8003ea4: f7ff ff4a bl 8003d3c - ST7793_SendCommand(0x0400, 0xE200); //Base Image Display Control. Flip X. Datasheet page 114. - 8003ea8: 23e2 movs r3, #226 ; 0xe2 - 8003eaa: 021a lsls r2, r3, #8 - 8003eac: 2380 movs r3, #128 ; 0x80 - 8003eae: 00db lsls r3, r3, #3 - 8003eb0: 0011 movs r1, r2 - 8003eb2: 0018 movs r0, r3 - 8003eb4: f7ff ff42 bl 8003d3c - - //Power control - ST7793_SendCommand(0x00FF, 0x0001); //Ext Command Control. Enable extended registers - 8003eb8: 2101 movs r1, #1 - 8003eba: 20ff movs r0, #255 ; 0xff - 8003ebc: f7ff ff3e bl 8003d3c - ST7793_SendCommand(0x0102, 0x01B0); //Power Control 3. Turn on power supply - 8003ec0: 23d8 movs r3, #216 ; 0xd8 - 8003ec2: 005a lsls r2, r3, #1 - 8003ec4: 2381 movs r3, #129 ; 0x81 - 8003ec6: 005b lsls r3, r3, #1 - 8003ec8: 0011 movs r1, r2 - 8003eca: 0018 movs r0, r3 - 8003ecc: f7ff ff36 bl 8003d3c - ST7793_SendCommand(0x0710, 0x0014); //Source Control 1. 4.250 V - 8003ed0: 23e2 movs r3, #226 ; 0xe2 - 8003ed2: 00db lsls r3, r3, #3 - 8003ed4: 2114 movs r1, #20 - 8003ed6: 0018 movs r0, r3 - 8003ed8: f7ff ff30 bl 8003d3c - ST7793_SendCommand(0x0712, 0x000F); //Source Control 2. 0 mV - 8003edc: 4b36 ldr r3, [pc, #216] ; (8003fb8 ) - 8003ede: 210f movs r1, #15 - 8003ee0: 0018 movs r0, r3 - 8003ee2: f7ff ff2b bl 8003d3c - ST7793_SendCommand(0x0752, 0x001F); //Source Driving Control. Medium - 8003ee6: 4b35 ldr r3, [pc, #212] ; (8003fbc ) - 8003ee8: 211f movs r1, #31 - 8003eea: 0018 movs r0, r3 - 8003eec: f7ff ff26 bl 8003d3c - delay_us(200000); - 8003ef0: 4b33 ldr r3, [pc, #204] ; (8003fc0 ) - 8003ef2: 0018 movs r0, r3 - 8003ef4: f7ff fe3e bl 8003b74 - - //Gamma correction - ST7793_SendCommand(0x0380, 0x0303); - 8003ef8: 4a32 ldr r2, [pc, #200] ; (8003fc4 ) - 8003efa: 23e0 movs r3, #224 ; 0xe0 - 8003efc: 009b lsls r3, r3, #2 - 8003efe: 0011 movs r1, r2 - 8003f00: 0018 movs r0, r3 - 8003f02: f7ff ff1b bl 8003d3c - ST7793_SendCommand(0x0381, 0x481F); - 8003f06: 4a30 ldr r2, [pc, #192] ; (8003fc8 ) - 8003f08: 4b30 ldr r3, [pc, #192] ; (8003fcc ) - 8003f0a: 0011 movs r1, r2 - 8003f0c: 0018 movs r0, r3 - 8003f0e: f7ff ff15 bl 8003d3c - ST7793_SendCommand(0x0382, 0x0803); - 8003f12: 4a2f ldr r2, [pc, #188] ; (8003fd0 ) - 8003f14: 4b2f ldr r3, [pc, #188] ; (8003fd4 ) - 8003f16: 0011 movs r1, r2 - 8003f18: 0018 movs r0, r3 - 8003f1a: f7ff ff0f bl 8003d3c - ST7793_SendCommand(0x0383, 0x030F); - 8003f1e: 4a2e ldr r2, [pc, #184] ; (8003fd8 ) - 8003f20: 4b2e ldr r3, [pc, #184] ; (8003fdc ) - 8003f22: 0011 movs r1, r2 - 8003f24: 0018 movs r0, r3 - 8003f26: f7ff ff09 bl 8003d3c - ST7793_SendCommand(0x0384, 0x2230); - 8003f2a: 4a2d ldr r2, [pc, #180] ; (8003fe0 ) - 8003f2c: 23e1 movs r3, #225 ; 0xe1 - 8003f2e: 009b lsls r3, r3, #2 - 8003f30: 0011 movs r1, r2 - 8003f32: 0018 movs r0, r3 - 8003f34: f7ff ff02 bl 8003d3c - ST7793_SendCommand(0x0385, 0x0300); - 8003f38: 23c0 movs r3, #192 ; 0xc0 - 8003f3a: 009b lsls r3, r3, #2 - 8003f3c: 4a29 ldr r2, [pc, #164] ; (8003fe4 ) - 8003f3e: 0019 movs r1, r3 - 8003f40: 0010 movs r0, r2 - 8003f42: f7ff fefb bl 8003d3c - ST7793_SendCommand(0x0386, 0x491E); - 8003f46: 4a28 ldr r2, [pc, #160] ; (8003fe8 ) - 8003f48: 4b28 ldr r3, [pc, #160] ; (8003fec ) - 8003f4a: 0011 movs r1, r2 - 8003f4c: 0018 movs r0, r3 - 8003f4e: f7ff fef5 bl 8003d3c - ST7793_SendCommand(0x0387, 0x0703); - 8003f52: 4a27 ldr r2, [pc, #156] ; (8003ff0 ) - 8003f54: 4b27 ldr r3, [pc, #156] ; (8003ff4 ) - 8003f56: 0011 movs r1, r2 - 8003f58: 0018 movs r0, r3 - 8003f5a: f7ff feef bl 8003d3c - ST7793_SendCommand(0x0388, 0x070F); - 8003f5e: 4a26 ldr r2, [pc, #152] ; (8003ff8 ) - 8003f60: 23e2 movs r3, #226 ; 0xe2 - 8003f62: 009b lsls r3, r3, #2 - 8003f64: 0011 movs r1, r2 - 8003f66: 0018 movs r0, r3 - 8003f68: f7ff fee8 bl 8003d3c - ST7793_SendCommand(0x0389, 0x2230); - 8003f6c: 4a1c ldr r2, [pc, #112] ; (8003fe0 ) - 8003f6e: 4b23 ldr r3, [pc, #140] ; (8003ffc ) - 8003f70: 0011 movs r1, r2 - 8003f72: 0018 movs r0, r3 - 8003f74: f7ff fee2 bl 8003d3c - - ST7793_SendCommand(0x0702, 0x0060); //VCOM Control. 1680 mV - 8003f78: 4b21 ldr r3, [pc, #132] ; (8004000 ) - 8003f7a: 2160 movs r1, #96 ; 0x60 - 8003f7c: 0018 movs r0, r3 - 8003f7e: f7ff fedd bl 8003d3c - ST7793_SendCommand(0x00FF, 0x0000); //Ext Command Control. Disable extended registers - 8003f82: 2100 movs r1, #0 - 8003f84: 20ff movs r0, #255 ; 0xff - 8003f86: f7ff fed9 bl 8003d3c - ST7793_SendCommand(0x0007, 0x0100); //Display Control 1. Base image display enable - 8003f8a: 2380 movs r3, #128 ; 0x80 - 8003f8c: 005b lsls r3, r3, #1 - 8003f8e: 0019 movs r1, r3 - 8003f90: 2007 movs r0, #7 - 8003f92: f7ff fed3 bl 8003d3c - delay_us(200000); - 8003f96: 4b0a ldr r3, [pc, #40] ; (8003fc0 ) - 8003f98: 0018 movs r0, r3 - 8003f9a: f7ff fdeb bl 8003b74 - //ST7793_CS_OFF; //Deactivate CS pin - -#ifdef ST7793_USE_PWM - ST7793_Brightness(99); - 8003f9e: 2063 movs r0, #99 ; 0x63 - 8003fa0: f000 f830 bl 8004004 -#else - HAL_GPIO_WritePin(ST7793_LED_pt, ST7793_LED_pn, GPIO_PIN_SET); -#endif - return 0; - 8003fa4: 2300 movs r3, #0 -} - 8003fa6: 0018 movs r0, r3 - 8003fa8: 46bd mov sp, r7 - 8003faa: bd80 pop {r7, pc} - 8003fac: 50000c00 .word 0x50000c00 - 8003fb0: 00007793 .word 0x00007793 - 8003fb4: 00001038 .word 0x00001038 - 8003fb8: 00000712 .word 0x00000712 - 8003fbc: 00000752 .word 0x00000752 - 8003fc0: 00030d40 .word 0x00030d40 - 8003fc4: 00000303 .word 0x00000303 - 8003fc8: 0000481f .word 0x0000481f - 8003fcc: 00000381 .word 0x00000381 - 8003fd0: 00000803 .word 0x00000803 - 8003fd4: 00000382 .word 0x00000382 - 8003fd8: 0000030f .word 0x0000030f - 8003fdc: 00000383 .word 0x00000383 - 8003fe0: 00002230 .word 0x00002230 - 8003fe4: 00000385 .word 0x00000385 - 8003fe8: 0000491e .word 0x0000491e - 8003fec: 00000386 .word 0x00000386 - 8003ff0: 00000703 .word 0x00000703 - 8003ff4: 00000387 .word 0x00000387 - 8003ff8: 0000070f .word 0x0000070f - 8003ffc: 00000389 .word 0x00000389 - 8004000: 00000702 .word 0x00000702 - -08004004 : - -//Set backlight brightness (0-99) -void ST7793_Brightness(uint8_t level) { - 8004004: b580 push {r7, lr} - 8004006: b082 sub sp, #8 - 8004008: af00 add r7, sp, #0 - 800400a: 0002 movs r2, r0 - 800400c: 1dfb adds r3, r7, #7 - 800400e: 701a strb r2, [r3, #0] - ST7793_TIM->CCR1 = level; - 8004010: 4b03 ldr r3, [pc, #12] ; (8004020 ) - 8004012: 1dfa adds r2, r7, #7 - 8004014: 7812 ldrb r2, [r2, #0] - 8004016: 635a str r2, [r3, #52] ; 0x34 -} - 8004018: 46c0 nop ; (mov r8, r8) - 800401a: 46bd mov sp, r7 - 800401c: b002 add sp, #8 - 800401e: bd80 pop {r7, pc} - 8004020: 40014000 .word 0x40014000 - -08004024 : - -//=============================== Drawing functions =============================== - -//Fill the entire screen with color -void ST7793_FillScreen(uint16_t color) { - 8004024: b580 push {r7, lr} - 8004026: b084 sub sp, #16 - 8004028: af00 add r7, sp, #0 - 800402a: 0002 movs r2, r0 - 800402c: 1dbb adds r3, r7, #6 - 800402e: 801a strh r2, [r3, #0] - int i, cnt = ST7793_XMAX * ST7793_YMAX; - 8004030: 4b2f ldr r3, [pc, #188] ; (80040f0 ) - 8004032: 60bb str r3, [r7, #8] - color = ~color; - 8004034: 1dbb adds r3, r7, #6 - 8004036: 1dba adds r2, r7, #6 - 8004038: 8812 ldrh r2, [r2, #0] - 800403a: 43d2 mvns r2, r2 - 800403c: 801a strh r2, [r3, #0] - - //Set the window to entire screen - ST7793_SendCommand(0x0212, 0); - 800403e: 4b2d ldr r3, [pc, #180] ; (80040f4 ) - 8004040: 2100 movs r1, #0 - 8004042: 0018 movs r0, r3 - 8004044: f7ff fe7a bl 8003d3c - ST7793_SendCommand(0x0213, ST7793_XMAX-1); - 8004048: 2390 movs r3, #144 ; 0x90 - 800404a: 33ff adds r3, #255 ; 0xff - 800404c: 4a2a ldr r2, [pc, #168] ; (80040f8 ) - 800404e: 0019 movs r1, r3 - 8004050: 0010 movs r0, r2 - 8004052: f7ff fe73 bl 8003d3c - ST7793_SendCommand(0x0210, 0); - 8004056: 2384 movs r3, #132 ; 0x84 - 8004058: 009b lsls r3, r3, #2 - 800405a: 2100 movs r1, #0 - 800405c: 0018 movs r0, r3 - 800405e: f7ff fe6d bl 8003d3c - ST7793_SendCommand(0x0211, ST7793_YMAX-1); - 8004062: 4b26 ldr r3, [pc, #152] ; (80040fc ) - 8004064: 21ef movs r1, #239 ; 0xef - 8004066: 0018 movs r0, r3 - 8004068: f7ff fe68 bl 8003d3c - - ST7793_SendCommand(0x0201, 0); //Set X pixel address - 800406c: 4b24 ldr r3, [pc, #144] ; (8004100 ) - 800406e: 2100 movs r1, #0 - 8004070: 0018 movs r0, r3 - 8004072: f7ff fe63 bl 8003d3c - ST7793_SendCommand(0x0200, 0); //Set Y pixel address - 8004076: 2380 movs r3, #128 ; 0x80 - 8004078: 009b lsls r3, r3, #2 - 800407a: 2100 movs r1, #0 - 800407c: 0018 movs r0, r3 - 800407e: f7ff fe5d bl 8003d3c - - ST7793_COMMAND; //RS pin to command mode - 8004082: 4b20 ldr r3, [pc, #128] ; (8004104 ) - 8004084: 2200 movs r2, #0 - 8004086: 2101 movs r1, #1 - 8004088: 0018 movs r0, r3 - 800408a: f003 fbcf bl 800782c - ST7793_Write8(0x02); //send a command 0x0202 8 MSB first - 800408e: 2002 movs r0, #2 - 8004090: f7ff fdcc bl 8003c2c - ST7793_WR_PULSE; //Pulse on the WR pin to send the same 8bits as LSB of the command - 8004094: 4b1b ldr r3, [pc, #108] ; (8004104 ) - 8004096: 2200 movs r2, #0 - 8004098: 2102 movs r1, #2 - 800409a: 0018 movs r0, r3 - 800409c: f003 fbc6 bl 800782c - 80040a0: 4b18 ldr r3, [pc, #96] ; (8004104 ) - 80040a2: 2201 movs r2, #1 - 80040a4: 2102 movs r1, #2 - 80040a6: 0018 movs r0, r3 - 80040a8: f003 fbc0 bl 800782c - - ST7793_DATA; //RS pin to data mode - 80040ac: 4b15 ldr r3, [pc, #84] ; (8004104 ) - 80040ae: 2201 movs r2, #1 - 80040b0: 2101 movs r1, #1 - 80040b2: 0018 movs r0, r3 - 80040b4: f003 fbba bl 800782c - for (i=0; i - ST7793_Write8(color >> 8); //Send color code 8MSB - 80040be: 1dbb adds r3, r7, #6 - 80040c0: 881b ldrh r3, [r3, #0] - 80040c2: 0a1b lsrs r3, r3, #8 - 80040c4: b29b uxth r3, r3 - 80040c6: 0018 movs r0, r3 - 80040c8: f7ff fdb0 bl 8003c2c - ST7793_Write8(color); //Send color code 8LSB - 80040cc: 1dbb adds r3, r7, #6 - 80040ce: 881b ldrh r3, [r3, #0] - 80040d0: 0018 movs r0, r3 - 80040d2: f7ff fdab bl 8003c2c - for (i=0; i - } -} - 80040e4: 46c0 nop ; (mov r8, r8) - 80040e6: 46c0 nop ; (mov r8, r8) - 80040e8: 46bd mov sp, r7 - 80040ea: b004 add sp, #16 - 80040ec: bd80 pop {r7, pc} - 80040ee: 46c0 nop ; (mov r8, r8) - 80040f0: 00017700 .word 0x00017700 - 80040f4: 00000212 .word 0x00000212 - 80040f8: 00000213 .word 0x00000213 - 80040fc: 00000211 .word 0x00000211 - 8004100: 00000201 .word 0x00000201 - 8004104: 50000400 .word 0x50000400 - -08004108 : - -//Fill a rectangle zone with color -void ST7793_FillRect(uint16_t color, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { - 8004108: b5b0 push {r4, r5, r7, lr} - 800410a: b086 sub sp, #24 - 800410c: af00 add r7, sp, #0 - 800410e: 0005 movs r5, r0 - 8004110: 000c movs r4, r1 - 8004112: 0010 movs r0, r2 - 8004114: 0019 movs r1, r3 - 8004116: 1dbb adds r3, r7, #6 - 8004118: 1c2a adds r2, r5, #0 - 800411a: 801a strh r2, [r3, #0] - 800411c: 1d3b adds r3, r7, #4 - 800411e: 1c22 adds r2, r4, #0 - 8004120: 801a strh r2, [r3, #0] - 8004122: 1cbb adds r3, r7, #2 - 8004124: 1c02 adds r2, r0, #0 - 8004126: 801a strh r2, [r3, #0] - 8004128: 003b movs r3, r7 - 800412a: 1c0a adds r2, r1, #0 - 800412c: 801a strh r2, [r3, #0] - int k, l, dx, dy; - color = ~color; - 800412e: 1dbb adds r3, r7, #6 - 8004130: 1dba adds r2, r7, #6 - 8004132: 8812 ldrh r2, [r2, #0] - 8004134: 43d2 mvns r2, r2 - 8004136: 801a strh r2, [r3, #0] - - //Check coordinates are in right order - if (x1 > x2) {dx = x1; x1 = x2; x2 = dx;} - 8004138: 1d3a adds r2, r7, #4 - 800413a: 003b movs r3, r7 - 800413c: 8812 ldrh r2, [r2, #0] - 800413e: 881b ldrh r3, [r3, #0] - 8004140: 429a cmp r2, r3 - 8004142: d909 bls.n 8004158 - 8004144: 1d3b adds r3, r7, #4 - 8004146: 881b ldrh r3, [r3, #0] - 8004148: 60fb str r3, [r7, #12] - 800414a: 1d3b adds r3, r7, #4 - 800414c: 003a movs r2, r7 - 800414e: 8812 ldrh r2, [r2, #0] - 8004150: 801a strh r2, [r3, #0] - 8004152: 003b movs r3, r7 - 8004154: 68fa ldr r2, [r7, #12] - 8004156: 801a strh r2, [r3, #0] - if (y1 > y2) {dy = y1; y1 = y2; y2 = dy;} - 8004158: 1cba adds r2, r7, #2 - 800415a: 2128 movs r1, #40 ; 0x28 - 800415c: 187b adds r3, r7, r1 - 800415e: 8812 ldrh r2, [r2, #0] - 8004160: 881b ldrh r3, [r3, #0] - 8004162: 429a cmp r2, r3 - 8004164: d909 bls.n 800417a - 8004166: 1cbb adds r3, r7, #2 - 8004168: 881b ldrh r3, [r3, #0] - 800416a: 60bb str r3, [r7, #8] - 800416c: 1cba adds r2, r7, #2 - 800416e: 187b adds r3, r7, r1 - 8004170: 881b ldrh r3, [r3, #0] - 8004172: 8013 strh r3, [r2, #0] - 8004174: 187b adds r3, r7, r1 - 8004176: 68ba ldr r2, [r7, #8] - 8004178: 801a strh r2, [r3, #0] - dx = x2-x1; - 800417a: 003b movs r3, r7 - 800417c: 881a ldrh r2, [r3, #0] - 800417e: 1d3b adds r3, r7, #4 - 8004180: 881b ldrh r3, [r3, #0] - 8004182: 1ad3 subs r3, r2, r3 - 8004184: 60fb str r3, [r7, #12] - dy = y2-y1; - 8004186: 2428 movs r4, #40 ; 0x28 - 8004188: 193b adds r3, r7, r4 - 800418a: 881a ldrh r2, [r3, #0] - 800418c: 1cbb adds r3, r7, #2 - 800418e: 881b ldrh r3, [r3, #0] - 8004190: 1ad3 subs r3, r2, r3 - 8004192: 60bb str r3, [r7, #8] - - //Set screen window and start coordinates - ST7793_SendCommand(0x210,y1); - 8004194: 1cbb adds r3, r7, #2 - 8004196: 881a ldrh r2, [r3, #0] - 8004198: 2384 movs r3, #132 ; 0x84 - 800419a: 009b lsls r3, r3, #2 - 800419c: 0011 movs r1, r2 - 800419e: 0018 movs r0, r3 - 80041a0: f7ff fdcc bl 8003d3c - ST7793_SendCommand(0x211,y2); - 80041a4: 193b adds r3, r7, r4 - 80041a6: 881b ldrh r3, [r3, #0] - 80041a8: 4a30 ldr r2, [pc, #192] ; (800426c ) - 80041aa: 0019 movs r1, r3 - 80041ac: 0010 movs r0, r2 - 80041ae: f7ff fdc5 bl 8003d3c - ST7793_SendCommand(0x212,x1); - 80041b2: 1d3b adds r3, r7, #4 - 80041b4: 881b ldrh r3, [r3, #0] - 80041b6: 4a2e ldr r2, [pc, #184] ; (8004270 ) - 80041b8: 0019 movs r1, r3 - 80041ba: 0010 movs r0, r2 - 80041bc: f7ff fdbe bl 8003d3c - ST7793_SendCommand(0x213,x2); - 80041c0: 003b movs r3, r7 - 80041c2: 881b ldrh r3, [r3, #0] - 80041c4: 4a2b ldr r2, [pc, #172] ; (8004274 ) - 80041c6: 0019 movs r1, r3 - 80041c8: 0010 movs r0, r2 - 80041ca: f7ff fdb7 bl 8003d3c - ST7793_SendCommand(0x200,y1); - 80041ce: 1cbb adds r3, r7, #2 - 80041d0: 881a ldrh r2, [r3, #0] - 80041d2: 2380 movs r3, #128 ; 0x80 - 80041d4: 009b lsls r3, r3, #2 - 80041d6: 0011 movs r1, r2 - 80041d8: 0018 movs r0, r3 - 80041da: f7ff fdaf bl 8003d3c - ST7793_SendCommand(0x201,x1); - 80041de: 1d3b adds r3, r7, #4 - 80041e0: 881b ldrh r3, [r3, #0] - 80041e2: 4a25 ldr r2, [pc, #148] ; (8004278 ) - 80041e4: 0019 movs r1, r3 - 80041e6: 0010 movs r0, r2 - 80041e8: f7ff fda8 bl 8003d3c - - ST7793_COMMAND; //RS pin to command mode - 80041ec: 4b23 ldr r3, [pc, #140] ; (800427c ) - 80041ee: 2200 movs r2, #0 - 80041f0: 2101 movs r1, #1 - 80041f2: 0018 movs r0, r3 - 80041f4: f003 fb1a bl 800782c - ST7793_Write8(0x02); //send a command 0x0202 8 MSB first - 80041f8: 2002 movs r0, #2 - 80041fa: f7ff fd17 bl 8003c2c - ST7793_WR_PULSE; //Pulse on the WR pin to send the same 8bits as LSB of the command - 80041fe: 4b1f ldr r3, [pc, #124] ; (800427c ) - 8004200: 2200 movs r2, #0 - 8004202: 2102 movs r1, #2 - 8004204: 0018 movs r0, r3 - 8004206: f003 fb11 bl 800782c - 800420a: 4b1c ldr r3, [pc, #112] ; (800427c ) - 800420c: 2201 movs r2, #1 - 800420e: 2102 movs r1, #2 - 8004210: 0018 movs r0, r3 - 8004212: f003 fb0b bl 800782c - - ST7793_DATA; //RS pin to data mode - 8004216: 4b19 ldr r3, [pc, #100] ; (800427c ) - 8004218: 2201 movs r2, #1 - 800421a: 2101 movs r1, #1 - 800421c: 0018 movs r0, r3 - 800421e: f003 fb05 bl 800782c - for (k=0; k<=dx; k++) - 8004222: 2300 movs r3, #0 - 8004224: 617b str r3, [r7, #20] - 8004226: e018 b.n 800425a - for (l=0; l<=dy; l++) { - 8004228: 2300 movs r3, #0 - 800422a: 613b str r3, [r7, #16] - 800422c: e00e b.n 800424c - ST7793_Write8(color >> 8); //Send color code 8MSB - 800422e: 1dbb adds r3, r7, #6 - 8004230: 881b ldrh r3, [r3, #0] - 8004232: 0a1b lsrs r3, r3, #8 - 8004234: b29b uxth r3, r3 - 8004236: 0018 movs r0, r3 - 8004238: f7ff fcf8 bl 8003c2c - ST7793_Write8(color); //Send color code 8LSB - 800423c: 1dbb adds r3, r7, #6 - 800423e: 881b ldrh r3, [r3, #0] - 8004240: 0018 movs r0, r3 - 8004242: f7ff fcf3 bl 8003c2c - for (l=0; l<=dy; l++) { - 8004246: 693b ldr r3, [r7, #16] - 8004248: 3301 adds r3, #1 - 800424a: 613b str r3, [r7, #16] - 800424c: 693a ldr r2, [r7, #16] - 800424e: 68bb ldr r3, [r7, #8] - 8004250: 429a cmp r2, r3 - 8004252: ddec ble.n 800422e - for (k=0; k<=dx; k++) - 8004254: 697b ldr r3, [r7, #20] - 8004256: 3301 adds r3, #1 - 8004258: 617b str r3, [r7, #20] - 800425a: 697a ldr r2, [r7, #20] - 800425c: 68fb ldr r3, [r7, #12] - 800425e: 429a cmp r2, r3 - 8004260: dde2 ble.n 8004228 - } -} - 8004262: 46c0 nop ; (mov r8, r8) - 8004264: 46c0 nop ; (mov r8, r8) - 8004266: 46bd mov sp, r7 - 8004268: b006 add sp, #24 - 800426a: bdb0 pop {r4, r5, r7, pc} - 800426c: 00000211 .word 0x00000211 - 8004270: 00000212 .word 0x00000212 - 8004274: 00000213 .word 0x00000213 - 8004278: 00000201 .word 0x00000201 - 800427c: 50000400 .word 0x50000400 - -08004280 : - -//Draw a pixel at XY -void ST7793_DrawPixel(uint16_t color, uint16_t x, uint16_t y) { - 8004280: b590 push {r4, r7, lr} - 8004282: b083 sub sp, #12 - 8004284: af00 add r7, sp, #0 - 8004286: 0004 movs r4, r0 - 8004288: 0008 movs r0, r1 - 800428a: 0011 movs r1, r2 - 800428c: 1dbb adds r3, r7, #6 - 800428e: 1c22 adds r2, r4, #0 - 8004290: 801a strh r2, [r3, #0] - 8004292: 1d3b adds r3, r7, #4 - 8004294: 1c02 adds r2, r0, #0 - 8004296: 801a strh r2, [r3, #0] - 8004298: 1cbb adds r3, r7, #2 - 800429a: 1c0a adds r2, r1, #0 - 800429c: 801a strh r2, [r3, #0] - color = ~color; - 800429e: 1dbb adds r3, r7, #6 - 80042a0: 1dba adds r2, r7, #6 - 80042a2: 8812 ldrh r2, [r2, #0] - 80042a4: 43d2 mvns r2, r2 - 80042a6: 801a strh r2, [r3, #0] - ST7793_SendCommand(0x0201, x); //Set X pixel address - 80042a8: 1d3b adds r3, r7, #4 - 80042aa: 881b ldrh r3, [r3, #0] - 80042ac: 4a15 ldr r2, [pc, #84] ; (8004304 ) - 80042ae: 0019 movs r1, r3 - 80042b0: 0010 movs r0, r2 - 80042b2: f7ff fd43 bl 8003d3c - ST7793_SendCommand(0x0200, y); //Set Y pixel address - 80042b6: 1cbb adds r3, r7, #2 - 80042b8: 881a ldrh r2, [r3, #0] - 80042ba: 2380 movs r3, #128 ; 0x80 - 80042bc: 009b lsls r3, r3, #2 - 80042be: 0011 movs r1, r2 - 80042c0: 0018 movs r0, r3 - 80042c2: f7ff fd3b bl 8003d3c - - ST7793_COMMAND; //RS pin to command mode - 80042c6: 4b10 ldr r3, [pc, #64] ; (8004308 ) - 80042c8: 2200 movs r2, #0 - 80042ca: 2101 movs r1, #1 - 80042cc: 0018 movs r0, r3 - 80042ce: f003 faad bl 800782c - ST7793_Write8(0x02); //send a command 0x0202 8 MSB first - 80042d2: 2002 movs r0, #2 - 80042d4: f7ff fcaa bl 8003c2c - ST7793_WR_PULSE; //Pulse on the WR pin to send the same 8bits as LSB of the command - 80042d8: 4b0b ldr r3, [pc, #44] ; (8004308 ) - 80042da: 2200 movs r2, #0 - 80042dc: 2102 movs r1, #2 - 80042de: 0018 movs r0, r3 - 80042e0: f003 faa4 bl 800782c - 80042e4: 4b08 ldr r3, [pc, #32] ; (8004308 ) - 80042e6: 2201 movs r2, #1 - 80042e8: 2102 movs r1, #2 - 80042ea: 0018 movs r0, r3 - 80042ec: f003 fa9e bl 800782c - - ST7793_SendData(color); //Send color data - 80042f0: 1dbb adds r3, r7, #6 - 80042f2: 881b ldrh r3, [r3, #0] - 80042f4: 0018 movs r0, r3 - 80042f6: f7ff fd03 bl 8003d00 -} - 80042fa: 46c0 nop ; (mov r8, r8) - 80042fc: 46bd mov sp, r7 - 80042fe: b003 add sp, #12 - 8004300: bd90 pop {r4, r7, pc} - 8004302: 46c0 nop ; (mov r8, r8) - 8004304: 00000201 .word 0x00000201 - 8004308: 50000400 .word 0x50000400 - -0800430c : - -//Draw a line -void ST7793_DrawLine(uint16_t color, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { - 800430c: b5b0 push {r4, r5, r7, lr} - 800430e: b088 sub sp, #32 - 8004310: af00 add r7, sp, #0 - 8004312: 0005 movs r5, r0 - 8004314: 000c movs r4, r1 - 8004316: 0010 movs r0, r2 - 8004318: 0019 movs r1, r3 - 800431a: 1dbb adds r3, r7, #6 - 800431c: 1c2a adds r2, r5, #0 - 800431e: 801a strh r2, [r3, #0] - 8004320: 1d3b adds r3, r7, #4 - 8004322: 1c22 adds r2, r4, #0 - 8004324: 801a strh r2, [r3, #0] - 8004326: 1cbb adds r3, r7, #2 - 8004328: 1c02 adds r2, r0, #0 - 800432a: 801a strh r2, [r3, #0] - 800432c: 003b movs r3, r7 - 800432e: 1c0a adds r2, r1, #0 - 8004330: 801a strh r2, [r3, #0] - int dx = abs(x2-x1); - 8004332: 003b movs r3, r7 - 8004334: 881a ldrh r2, [r3, #0] - 8004336: 1d3b adds r3, r7, #4 - 8004338: 881b ldrh r3, [r3, #0] - 800433a: 1ad3 subs r3, r2, r3 - 800433c: 17da asrs r2, r3, #31 - 800433e: 189b adds r3, r3, r2 - 8004340: 4053 eors r3, r2 - 8004342: 61bb str r3, [r7, #24] - int dy = abs(y2-y1); - 8004344: 2330 movs r3, #48 ; 0x30 - 8004346: 18fb adds r3, r7, r3 - 8004348: 881a ldrh r2, [r3, #0] - 800434a: 1cbb adds r3, r7, #2 - 800434c: 881b ldrh r3, [r3, #0] - 800434e: 1ad3 subs r3, r2, r3 - 8004350: 17da asrs r2, r3, #31 - 8004352: 189b adds r3, r3, r2 - 8004354: 4053 eors r3, r2 - 8004356: 617b str r3, [r7, #20] - int sx = x1 < x2 ? 1 : -1; - 8004358: 1d3a adds r2, r7, #4 - 800435a: 003b movs r3, r7 - 800435c: 8812 ldrh r2, [r2, #0] - 800435e: 881b ldrh r3, [r3, #0] - 8004360: 429a cmp r2, r3 - 8004362: d201 bcs.n 8004368 - 8004364: 2301 movs r3, #1 - 8004366: e001 b.n 800436c - 8004368: 2301 movs r3, #1 - 800436a: 425b negs r3, r3 - 800436c: 613b str r3, [r7, #16] - int sy = y1 < y2 ? 1 : -1; - 800436e: 1cba adds r2, r7, #2 - 8004370: 2330 movs r3, #48 ; 0x30 - 8004372: 18fb adds r3, r7, r3 - 8004374: 8812 ldrh r2, [r2, #0] - 8004376: 881b ldrh r3, [r3, #0] - 8004378: 429a cmp r2, r3 - 800437a: d201 bcs.n 8004380 - 800437c: 2301 movs r3, #1 - 800437e: e001 b.n 8004384 - 8004380: 2301 movs r3, #1 - 8004382: 425b negs r3, r3 - 8004384: 60fb str r3, [r7, #12] - int error = dx - dy; - 8004386: 69ba ldr r2, [r7, #24] - 8004388: 697b ldr r3, [r7, #20] - 800438a: 1ad3 subs r3, r2, r3 - 800438c: 61fb str r3, [r7, #28] - int error2; - - ST7793_DrawPixel(color, x2, y2); - 800438e: 2330 movs r3, #48 ; 0x30 - 8004390: 18fb adds r3, r7, r3 - 8004392: 881a ldrh r2, [r3, #0] - 8004394: 003b movs r3, r7 - 8004396: 8819 ldrh r1, [r3, #0] - 8004398: 1dbb adds r3, r7, #6 - 800439a: 881b ldrh r3, [r3, #0] - 800439c: 0018 movs r0, r3 - 800439e: f7ff ff6f bl 8004280 - while (x1 != x2 || y1 != y2) { - 80043a2: e02e b.n 8004402 - ST7793_DrawPixel(color, x1, y1); - 80043a4: 1cbb adds r3, r7, #2 - 80043a6: 881a ldrh r2, [r3, #0] - 80043a8: 1d3b adds r3, r7, #4 - 80043aa: 8819 ldrh r1, [r3, #0] - 80043ac: 1dbb adds r3, r7, #6 - 80043ae: 881b ldrh r3, [r3, #0] - 80043b0: 0018 movs r0, r3 - 80043b2: f7ff ff65 bl 8004280 - error2 = error << 1; - 80043b6: 69fb ldr r3, [r7, #28] - 80043b8: 005b lsls r3, r3, #1 - 80043ba: 60bb str r3, [r7, #8] - if (error2 > -dy) { - 80043bc: 697b ldr r3, [r7, #20] - 80043be: 425b negs r3, r3 - 80043c0: 68ba ldr r2, [r7, #8] - 80043c2: 429a cmp r2, r3 - 80043c4: dd0a ble.n 80043dc - error -= dy; - 80043c6: 69fa ldr r2, [r7, #28] - 80043c8: 697b ldr r3, [r7, #20] - 80043ca: 1ad3 subs r3, r2, r3 - 80043cc: 61fb str r3, [r7, #28] - x1 += sx; - 80043ce: 693b ldr r3, [r7, #16] - 80043d0: b299 uxth r1, r3 - 80043d2: 1d3b adds r3, r7, #4 - 80043d4: 1d3a adds r2, r7, #4 - 80043d6: 8812 ldrh r2, [r2, #0] - 80043d8: 188a adds r2, r1, r2 - 80043da: 801a strh r2, [r3, #0] - 80043dc: 1cbb adds r3, r7, #2 - 80043de: 1cba adds r2, r7, #2 - 80043e0: 8812 ldrh r2, [r2, #0] - 80043e2: 801a strh r2, [r3, #0] - } - if (error2 < dx) { - 80043e4: 68ba ldr r2, [r7, #8] - 80043e6: 69bb ldr r3, [r7, #24] - 80043e8: 429a cmp r2, r3 - 80043ea: da0a bge.n 8004402 - error += dx; - 80043ec: 69fa ldr r2, [r7, #28] - 80043ee: 69bb ldr r3, [r7, #24] - 80043f0: 18d3 adds r3, r2, r3 - 80043f2: 61fb str r3, [r7, #28] - y1 += sy; - 80043f4: 68fb ldr r3, [r7, #12] - 80043f6: b299 uxth r1, r3 - 80043f8: 1cbb adds r3, r7, #2 - 80043fa: 1cba adds r2, r7, #2 - 80043fc: 8812 ldrh r2, [r2, #0] - 80043fe: 188a adds r2, r1, r2 - 8004400: 801a strh r2, [r3, #0] - while (x1 != x2 || y1 != y2) { - 8004402: 1d3a adds r2, r7, #4 - 8004404: 003b movs r3, r7 - 8004406: 8812 ldrh r2, [r2, #0] - 8004408: 881b ldrh r3, [r3, #0] - 800440a: 429a cmp r2, r3 - 800440c: d1ca bne.n 80043a4 - 800440e: 1cba adds r2, r7, #2 - 8004410: 2330 movs r3, #48 ; 0x30 - 8004412: 18fb adds r3, r7, r3 - 8004414: 8812 ldrh r2, [r2, #0] - 8004416: 881b ldrh r3, [r3, #0] - 8004418: 429a cmp r2, r3 - 800441a: d1c3 bne.n 80043a4 - } - } -} - 800441c: 46c0 nop ; (mov r8, r8) - 800441e: 46c0 nop ; (mov r8, r8) - 8004420: 46bd mov sp, r7 - 8004422: b008 add sp, #32 - 8004424: bdb0 pop {r4, r5, r7, pc} - -08004426 : - -//Draw a rectangle -void ST7793_DrawRect(uint16_t color, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { - 8004426: b5b0 push {r4, r5, r7, lr} - 8004428: b084 sub sp, #16 - 800442a: af02 add r7, sp, #8 - 800442c: 0005 movs r5, r0 - 800442e: 000c movs r4, r1 - 8004430: 0010 movs r0, r2 - 8004432: 0019 movs r1, r3 - 8004434: 1dbb adds r3, r7, #6 - 8004436: 1c2a adds r2, r5, #0 - 8004438: 801a strh r2, [r3, #0] - 800443a: 1d3b adds r3, r7, #4 - 800443c: 1c22 adds r2, r4, #0 - 800443e: 801a strh r2, [r3, #0] - 8004440: 1cbb adds r3, r7, #2 - 8004442: 1c02 adds r2, r0, #0 - 8004444: 801a strh r2, [r3, #0] - 8004446: 003b movs r3, r7 - 8004448: 1c0a adds r2, r1, #0 - 800444a: 801a strh r2, [r3, #0] - ST7793_DrawLine(color, x1, y1, x2, y1); - 800444c: 003b movs r3, r7 - 800444e: 881c ldrh r4, [r3, #0] - 8004450: 1cbb adds r3, r7, #2 - 8004452: 881a ldrh r2, [r3, #0] - 8004454: 1d3b adds r3, r7, #4 - 8004456: 8819 ldrh r1, [r3, #0] - 8004458: 1dbb adds r3, r7, #6 - 800445a: 8818 ldrh r0, [r3, #0] - 800445c: 1cbb adds r3, r7, #2 - 800445e: 881b ldrh r3, [r3, #0] - 8004460: 9300 str r3, [sp, #0] - 8004462: 0023 movs r3, r4 - 8004464: f7ff ff52 bl 800430c - ST7793_DrawLine(color, x1, y2, x2, y2); - 8004468: 003b movs r3, r7 - 800446a: 881c ldrh r4, [r3, #0] - 800446c: 2518 movs r5, #24 - 800446e: 197b adds r3, r7, r5 - 8004470: 881a ldrh r2, [r3, #0] - 8004472: 1d3b adds r3, r7, #4 - 8004474: 8819 ldrh r1, [r3, #0] - 8004476: 1dbb adds r3, r7, #6 - 8004478: 8818 ldrh r0, [r3, #0] - 800447a: 197b adds r3, r7, r5 - 800447c: 881b ldrh r3, [r3, #0] - 800447e: 9300 str r3, [sp, #0] - 8004480: 0023 movs r3, r4 - 8004482: f7ff ff43 bl 800430c - ST7793_DrawLine(color, x1, y1, x1, y2); - 8004486: 1d3b adds r3, r7, #4 - 8004488: 881c ldrh r4, [r3, #0] - 800448a: 1cbb adds r3, r7, #2 - 800448c: 881a ldrh r2, [r3, #0] - 800448e: 1d3b adds r3, r7, #4 - 8004490: 8819 ldrh r1, [r3, #0] - 8004492: 1dbb adds r3, r7, #6 - 8004494: 8818 ldrh r0, [r3, #0] - 8004496: 197b adds r3, r7, r5 - 8004498: 881b ldrh r3, [r3, #0] - 800449a: 9300 str r3, [sp, #0] - 800449c: 0023 movs r3, r4 - 800449e: f7ff ff35 bl 800430c - ST7793_DrawLine(color, x2, y1, x2, y2); - 80044a2: 003b movs r3, r7 - 80044a4: 881c ldrh r4, [r3, #0] - 80044a6: 1cbb adds r3, r7, #2 - 80044a8: 881a ldrh r2, [r3, #0] - 80044aa: 003b movs r3, r7 - 80044ac: 8819 ldrh r1, [r3, #0] - 80044ae: 1dbb adds r3, r7, #6 - 80044b0: 8818 ldrh r0, [r3, #0] - 80044b2: 197b adds r3, r7, r5 - 80044b4: 881b ldrh r3, [r3, #0] - 80044b6: 9300 str r3, [sp, #0] - 80044b8: 0023 movs r3, r4 - 80044ba: f7ff ff27 bl 800430c -} - 80044be: 46c0 nop ; (mov r8, r8) - 80044c0: 46bd mov sp, r7 - 80044c2: b002 add sp, #8 - 80044c4: bdb0 pop {r4, r5, r7, pc} - ... - -080044c8 : - --y; - } -} - -//Set font size -void ST7793_SetFontSize(uint8_t size) { - 80044c8: b580 push {r7, lr} - 80044ca: b082 sub sp, #8 - 80044cc: af00 add r7, sp, #0 - 80044ce: 0002 movs r2, r0 - 80044d0: 1dfb adds r3, r7, #7 - 80044d2: 701a strb r2, [r3, #0] - if (size < 1) { - 80044d4: 1dfb adds r3, r7, #7 - 80044d6: 781b ldrb r3, [r3, #0] - 80044d8: 2b00 cmp r3, #0 - 80044da: d103 bne.n 80044e4 - ST7793_FontSize = 1; - 80044dc: 4b09 ldr r3, [pc, #36] ; (8004504 ) - 80044de: 2201 movs r2, #1 - 80044e0: 701a strb r2, [r3, #0] - } else if (size > 5) { - ST7793_FontSize = 5; - } else { - ST7793_FontSize = size; - } -} - 80044e2: e00b b.n 80044fc - } else if (size > 5) { - 80044e4: 1dfb adds r3, r7, #7 - 80044e6: 781b ldrb r3, [r3, #0] - 80044e8: 2b05 cmp r3, #5 - 80044ea: d903 bls.n 80044f4 - ST7793_FontSize = 5; - 80044ec: 4b05 ldr r3, [pc, #20] ; (8004504 ) - 80044ee: 2205 movs r2, #5 - 80044f0: 701a strb r2, [r3, #0] -} - 80044f2: e003 b.n 80044fc - ST7793_FontSize = size; - 80044f4: 4b03 ldr r3, [pc, #12] ; (8004504 ) - 80044f6: 1dfa adds r2, r7, #7 - 80044f8: 7812 ldrb r2, [r2, #0] - 80044fa: 701a strb r2, [r3, #0] -} - 80044fc: 46c0 nop ; (mov r8, r8) - 80044fe: 46bd mov sp, r7 - 8004500: b002 add sp, #8 - 8004502: bd80 pop {r7, pc} - 8004504: 2000003f .word 0x2000003f - -08004508 : - -//Draw a character -void ST7793_DrawChar(uint16_t color, uint16_t bgcolor, char c, uint16_t x, uint16_t y) { - 8004508: b5b0 push {r4, r5, r7, lr} - 800450a: b084 sub sp, #16 - 800450c: af00 add r7, sp, #0 - 800450e: 0005 movs r5, r0 - 8004510: 000c movs r4, r1 - 8004512: 0010 movs r0, r2 - 8004514: 0019 movs r1, r3 - 8004516: 1dbb adds r3, r7, #6 - 8004518: 1c2a adds r2, r5, #0 - 800451a: 801a strh r2, [r3, #0] - 800451c: 1d3b adds r3, r7, #4 - 800451e: 1c22 adds r2, r4, #0 - 8004520: 801a strh r2, [r3, #0] - 8004522: 1cfb adds r3, r7, #3 - 8004524: 1c02 adds r2, r0, #0 - 8004526: 701a strb r2, [r3, #0] - 8004528: 003b movs r3, r7 - 800452a: 1c0a adds r2, r1, #0 - 800452c: 801a strh r2, [r3, #0] - color = ~color; - 800452e: 1dbb adds r3, r7, #6 - 8004530: 1dba adds r2, r7, #6 - 8004532: 8812 ldrh r2, [r2, #0] - 8004534: 43d2 mvns r2, r2 - 8004536: 801a strh r2, [r3, #0] - bgcolor = ~bgcolor; - 8004538: 1d3b adds r3, r7, #4 - 800453a: 1d3a adds r2, r7, #4 - 800453c: 8812 ldrh r2, [r2, #0] - 800453e: 43d2 mvns r2, r2 - 8004540: 801a strh r2, [r3, #0] - char h, ch, p, mask, sh, sw; - - //Set screen window and start coordinates - ST7793_SendCommand(0x210,y); - 8004542: 2420 movs r4, #32 - 8004544: 193b adds r3, r7, r4 - 8004546: 881a ldrh r2, [r3, #0] - 8004548: 2384 movs r3, #132 ; 0x84 - 800454a: 009b lsls r3, r3, #2 - 800454c: 0011 movs r1, r2 - 800454e: 0018 movs r0, r3 - 8004550: f7ff fbf4 bl 8003d3c - ST7793_SendCommand(0x211,y+ST7793_CHAR_H*ST7793_FontSize+ST7793_FontSize-1); - 8004554: 4b70 ldr r3, [pc, #448] ; (8004718 ) - 8004556: 781b ldrb r3, [r3, #0] - 8004558: b29b uxth r3, r3 - 800455a: 220c movs r2, #12 - 800455c: 4353 muls r3, r2 - 800455e: b29a uxth r2, r3 - 8004560: 193b adds r3, r7, r4 - 8004562: 881b ldrh r3, [r3, #0] - 8004564: 18d3 adds r3, r2, r3 - 8004566: b29a uxth r2, r3 - 8004568: 4b6b ldr r3, [pc, #428] ; (8004718 ) - 800456a: 781b ldrb r3, [r3, #0] - 800456c: b29b uxth r3, r3 - 800456e: 18d3 adds r3, r2, r3 - 8004570: b29b uxth r3, r3 - 8004572: 3b01 subs r3, #1 - 8004574: b29b uxth r3, r3 - 8004576: 4a69 ldr r2, [pc, #420] ; (800471c ) - 8004578: 0019 movs r1, r3 - 800457a: 0010 movs r0, r2 - 800457c: f7ff fbde bl 8003d3c - ST7793_SendCommand(0x212,x); - 8004580: 003b movs r3, r7 - 8004582: 881b ldrh r3, [r3, #0] - 8004584: 4a66 ldr r2, [pc, #408] ; (8004720 ) - 8004586: 0019 movs r1, r3 - 8004588: 0010 movs r0, r2 - 800458a: f7ff fbd7 bl 8003d3c - ST7793_SendCommand(0x213,x+(ST7793_CHAR_W-1)*ST7793_FontSize+ST7793_FontSize-1); - 800458e: 4b62 ldr r3, [pc, #392] ; (8004718 ) - 8004590: 781b ldrb r3, [r3, #0] - 8004592: b29b uxth r3, r3 - 8004594: 1c1a adds r2, r3, #0 - 8004596: 00d2 lsls r2, r2, #3 - 8004598: 1ad3 subs r3, r2, r3 - 800459a: b29a uxth r2, r3 - 800459c: 003b movs r3, r7 - 800459e: 881b ldrh r3, [r3, #0] - 80045a0: 18d3 adds r3, r2, r3 - 80045a2: b29a uxth r2, r3 - 80045a4: 4b5c ldr r3, [pc, #368] ; (8004718 ) - 80045a6: 781b ldrb r3, [r3, #0] - 80045a8: b29b uxth r3, r3 - 80045aa: 18d3 adds r3, r2, r3 - 80045ac: b29b uxth r3, r3 - 80045ae: 3b01 subs r3, #1 - 80045b0: b29b uxth r3, r3 - 80045b2: 4a5c ldr r2, [pc, #368] ; (8004724 ) - 80045b4: 0019 movs r1, r3 - 80045b6: 0010 movs r0, r2 - 80045b8: f7ff fbc0 bl 8003d3c - ST7793_SendCommand(0x200,y); - 80045bc: 193b adds r3, r7, r4 - 80045be: 881a ldrh r2, [r3, #0] - 80045c0: 2380 movs r3, #128 ; 0x80 - 80045c2: 009b lsls r3, r3, #2 - 80045c4: 0011 movs r1, r2 - 80045c6: 0018 movs r0, r3 - 80045c8: f7ff fbb8 bl 8003d3c - ST7793_SendCommand(0x201,x); - 80045cc: 003b movs r3, r7 - 80045ce: 881b ldrh r3, [r3, #0] - 80045d0: 4a55 ldr r2, [pc, #340] ; (8004728 ) - 80045d2: 0019 movs r1, r3 - 80045d4: 0010 movs r0, r2 - 80045d6: f7ff fbb1 bl 8003d3c - - ST7793_COMMAND; //RS pin to command mode - 80045da: 4b54 ldr r3, [pc, #336] ; (800472c ) - 80045dc: 2200 movs r2, #0 - 80045de: 2101 movs r1, #1 - 80045e0: 0018 movs r0, r3 - 80045e2: f003 f923 bl 800782c - ST7793_Write8(0x02); //send a command 0x0202 8 MSB first - 80045e6: 2002 movs r0, #2 - 80045e8: f7ff fb20 bl 8003c2c - ST7793_WR_PULSE; //Pulse on the WR pin to send the same 8bits as LSB of the command - 80045ec: 4b4f ldr r3, [pc, #316] ; (800472c ) - 80045ee: 2200 movs r2, #0 - 80045f0: 2102 movs r1, #2 - 80045f2: 0018 movs r0, r3 - 80045f4: f003 f91a bl 800782c - 80045f8: 4b4c ldr r3, [pc, #304] ; (800472c ) - 80045fa: 2201 movs r2, #1 - 80045fc: 2102 movs r1, #2 - 80045fe: 0018 movs r0, r3 - 8004600: f003 f914 bl 800782c - - for (h=0; h<=ST7793_CHAR_H; h++) { - 8004604: 230f movs r3, #15 - 8004606: 18fb adds r3, r7, r3 - 8004608: 2200 movs r2, #0 - 800460a: 701a strb r2, [r3, #0] - 800460c: e079 b.n 8004702 - ch = ascii_tab[(unsigned char)c][(unsigned char)h]; - 800460e: 1cfb adds r3, r7, #3 - 8004610: 781a ldrb r2, [r3, #0] - 8004612: 230f movs r3, #15 - 8004614: 18fb adds r3, r7, r3 - 8004616: 7818 ldrb r0, [r3, #0] - 8004618: 230a movs r3, #10 - 800461a: 18f9 adds r1, r7, r3 - 800461c: 4c44 ldr r4, [pc, #272] ; (8004730 ) - 800461e: 0013 movs r3, r2 - 8004620: 00db lsls r3, r3, #3 - 8004622: 1a9b subs r3, r3, r2 - 8004624: 005b lsls r3, r3, #1 - 8004626: 18e3 adds r3, r4, r3 - 8004628: 5c1b ldrb r3, [r3, r0] - 800462a: 700b strb r3, [r1, #0] - for (sh=0; sh - mask = 0x80; - 8004636: 230d movs r3, #13 - 8004638: 18fb adds r3, r7, r3 - 800463a: 2280 movs r2, #128 ; 0x80 - 800463c: 701a strb r2, [r3, #0] - for (p=ST7793_CHAR_W; p>0; p--) { - 800463e: 230e movs r3, #14 - 8004640: 18fb adds r3, r7, r3 - 8004642: 2208 movs r2, #8 - 8004644: 701a strb r2, [r3, #0] - 8004646: e044 b.n 80046d2 - if (ch & mask) { - 8004648: 230a movs r3, #10 - 800464a: 18fb adds r3, r7, r3 - 800464c: 220d movs r2, #13 - 800464e: 18ba adds r2, r7, r2 - 8004650: 781b ldrb r3, [r3, #0] - 8004652: 7812 ldrb r2, [r2, #0] - 8004654: 4013 ands r3, r2 - 8004656: b2db uxtb r3, r3 - 8004658: 2b00 cmp r3, #0 - 800465a: d017 beq.n 800468c - for (sw=0; sw - 8004666: 1dbb adds r3, r7, #6 - 8004668: 881b ldrh r3, [r3, #0] - 800466a: 0018 movs r0, r3 - 800466c: f7ff fb48 bl 8003d00 - 8004670: 210b movs r1, #11 - 8004672: 187b adds r3, r7, r1 - 8004674: 781a ldrb r2, [r3, #0] - 8004676: 187b adds r3, r7, r1 - 8004678: 3201 adds r2, #1 - 800467a: 701a strb r2, [r3, #0] - 800467c: 4b26 ldr r3, [pc, #152] ; (8004718 ) - 800467e: 781b ldrb r3, [r3, #0] - 8004680: 220b movs r2, #11 - 8004682: 18ba adds r2, r7, r2 - 8004684: 7812 ldrb r2, [r2, #0] - 8004686: 429a cmp r2, r3 - 8004688: d3ed bcc.n 8004666 - 800468a: e016 b.n 80046ba - } else { - for (sw=0; sw - 8004696: 1d3b adds r3, r7, #4 - 8004698: 881b ldrh r3, [r3, #0] - 800469a: 0018 movs r0, r3 - 800469c: f7ff fb30 bl 8003d00 - 80046a0: 210b movs r1, #11 - 80046a2: 187b adds r3, r7, r1 - 80046a4: 781a ldrb r2, [r3, #0] - 80046a6: 187b adds r3, r7, r1 - 80046a8: 3201 adds r2, #1 - 80046aa: 701a strb r2, [r3, #0] - 80046ac: 4b1a ldr r3, [pc, #104] ; (8004718 ) - 80046ae: 781b ldrb r3, [r3, #0] - 80046b0: 220b movs r2, #11 - 80046b2: 18ba adds r2, r7, r2 - 80046b4: 7812 ldrb r2, [r2, #0] - 80046b6: 429a cmp r2, r3 - 80046b8: d3ed bcc.n 8004696 - } - mask = mask >> 1; - 80046ba: 220d movs r2, #13 - 80046bc: 18bb adds r3, r7, r2 - 80046be: 18ba adds r2, r7, r2 - 80046c0: 7812 ldrb r2, [r2, #0] - 80046c2: 0852 lsrs r2, r2, #1 - 80046c4: 701a strb r2, [r3, #0] - for (p=ST7793_CHAR_W; p>0; p--) { - 80046c6: 210e movs r1, #14 - 80046c8: 187b adds r3, r7, r1 - 80046ca: 781a ldrb r2, [r3, #0] - 80046cc: 187b adds r3, r7, r1 - 80046ce: 3a01 subs r2, #1 - 80046d0: 701a strb r2, [r3, #0] - 80046d2: 230e movs r3, #14 - 80046d4: 18fb adds r3, r7, r3 - 80046d6: 781b ldrb r3, [r3, #0] - 80046d8: 2b00 cmp r3, #0 - 80046da: d1b5 bne.n 8004648 - for (sh=0; sh) - 80046ea: 781b ldrb r3, [r3, #0] - 80046ec: 220c movs r2, #12 - 80046ee: 18ba adds r2, r7, r2 - 80046f0: 7812 ldrb r2, [r2, #0] - 80046f2: 429a cmp r2, r3 - 80046f4: d39f bcc.n 8004636 - for (h=0; h<=ST7793_CHAR_H; h++) { - 80046f6: 210f movs r1, #15 - 80046f8: 187b adds r3, r7, r1 - 80046fa: 781a ldrb r2, [r3, #0] - 80046fc: 187b adds r3, r7, r1 - 80046fe: 3201 adds r2, #1 - 8004700: 701a strb r2, [r3, #0] - 8004702: 230f movs r3, #15 - 8004704: 18fb adds r3, r7, r3 - 8004706: 781b ldrb r3, [r3, #0] - 8004708: 2b0c cmp r3, #12 - 800470a: d800 bhi.n 800470e - 800470c: e77f b.n 800460e - } - } - } -} - 800470e: 46c0 nop ; (mov r8, r8) - 8004710: 46c0 nop ; (mov r8, r8) - 8004712: 46bd mov sp, r7 - 8004714: b004 add sp, #16 - 8004716: bdb0 pop {r4, r5, r7, pc} - 8004718: 2000003f .word 0x2000003f - 800471c: 00000211 .word 0x00000211 - 8004720: 00000212 .word 0x00000212 - 8004724: 00000213 .word 0x00000213 - 8004728: 00000201 .word 0x00000201 - 800472c: 50000400 .word 0x50000400 - 8004730: 08010018 .word 0x08010018 - -08004734 : - -//Draw a thin number character -void ST7793_DrawTNChar(uint16_t color, uint16_t bgcolor, char c, uint16_t x, uint16_t y) { - 8004734: b5b0 push {r4, r5, r7, lr} - 8004736: b084 sub sp, #16 - 8004738: af00 add r7, sp, #0 - 800473a: 0005 movs r5, r0 - 800473c: 000c movs r4, r1 - 800473e: 0010 movs r0, r2 - 8004740: 0019 movs r1, r3 - 8004742: 1dbb adds r3, r7, #6 - 8004744: 1c2a adds r2, r5, #0 - 8004746: 801a strh r2, [r3, #0] - 8004748: 1d3b adds r3, r7, #4 - 800474a: 1c22 adds r2, r4, #0 - 800474c: 801a strh r2, [r3, #0] - 800474e: 1cfb adds r3, r7, #3 - 8004750: 1c02 adds r2, r0, #0 - 8004752: 701a strb r2, [r3, #0] - 8004754: 003b movs r3, r7 - 8004756: 1c0a adds r2, r1, #0 - 8004758: 801a strh r2, [r3, #0] - uint8_t i, j, b, idx; - - if ( (c < 0x30 || c > 0x39) && c != 0x2E && c != 0xB0 && c != 0x73 ) return; // only numbers, dot and degree sign - 800475a: 1cfb adds r3, r7, #3 - 800475c: 781b ldrb r3, [r3, #0] - 800475e: 2b2f cmp r3, #47 ; 0x2f - 8004760: d903 bls.n 800476a - 8004762: 1cfb adds r3, r7, #3 - 8004764: 781b ldrb r3, [r3, #0] - 8004766: 2b39 cmp r3, #57 ; 0x39 - 8004768: d90c bls.n 8004784 - 800476a: 1cfb adds r3, r7, #3 - 800476c: 781b ldrb r3, [r3, #0] - 800476e: 2b2e cmp r3, #46 ; 0x2e - 8004770: d008 beq.n 8004784 - 8004772: 1cfb adds r3, r7, #3 - 8004774: 781b ldrb r3, [r3, #0] - 8004776: 2bb0 cmp r3, #176 ; 0xb0 - 8004778: d004 beq.n 8004784 - 800477a: 1cfb adds r3, r7, #3 - 800477c: 781b ldrb r3, [r3, #0] - 800477e: 2b73 cmp r3, #115 ; 0x73 - 8004780: d000 beq.n 8004784 - 8004782: e0b3 b.n 80048ec - - switch (c) { - 8004784: 1cfb adds r3, r7, #3 - 8004786: 781b ldrb r3, [r3, #0] - 8004788: 2bb0 cmp r3, #176 ; 0xb0 - 800478a: d00a beq.n 80047a2 - 800478c: dc13 bgt.n 80047b6 - 800478e: 2b2e cmp r3, #46 ; 0x2e - 8004790: d002 beq.n 8004798 - 8004792: 2b73 cmp r3, #115 ; 0x73 - 8004794: d00a beq.n 80047ac - 8004796: e00e b.n 80047b6 - case 0x2E: // . - idx = 10; - 8004798: 230d movs r3, #13 - 800479a: 18fb adds r3, r7, r3 - 800479c: 220a movs r2, #10 - 800479e: 701a strb r2, [r3, #0] - break; - 80047a0: e010 b.n 80047c4 - case 0xB0: // ° - idx = 11; - 80047a2: 230d movs r3, #13 - 80047a4: 18fb adds r3, r7, r3 - 80047a6: 220b movs r2, #11 - 80047a8: 701a strb r2, [r3, #0] - break; - 80047aa: e00b b.n 80047c4 - case 0x73: // s - idx = 12; - 80047ac: 230d movs r3, #13 - 80047ae: 18fb adds r3, r7, r3 - 80047b0: 220c movs r2, #12 - 80047b2: 701a strb r2, [r3, #0] - break; - 80047b4: e006 b.n 80047c4 - default: // 0-9 - idx = c - 0x30; - 80047b6: 230d movs r3, #13 - 80047b8: 18fb adds r3, r7, r3 - 80047ba: 1cfa adds r2, r7, #3 - 80047bc: 7812 ldrb r2, [r2, #0] - 80047be: 3a30 subs r2, #48 ; 0x30 - 80047c0: 701a strb r2, [r3, #0] - break; - 80047c2: 46c0 nop ; (mov r8, r8) - } - - color = ~color; - 80047c4: 1dbb adds r3, r7, #6 - 80047c6: 1dba adds r2, r7, #6 - 80047c8: 8812 ldrh r2, [r2, #0] - 80047ca: 43d2 mvns r2, r2 - 80047cc: 801a strh r2, [r3, #0] - bgcolor = ~bgcolor; - 80047ce: 1d3b adds r3, r7, #4 - 80047d0: 1d3a adds r2, r7, #4 - 80047d2: 8812 ldrh r2, [r2, #0] - 80047d4: 43d2 mvns r2, r2 - 80047d6: 801a strh r2, [r3, #0] - - //Set screen window and start coordinates - ST7793_SendCommand(0x210,y); - 80047d8: 2420 movs r4, #32 - 80047da: 193b adds r3, r7, r4 - 80047dc: 881a ldrh r2, [r3, #0] - 80047de: 2384 movs r3, #132 ; 0x84 - 80047e0: 009b lsls r3, r3, #2 - 80047e2: 0011 movs r1, r2 - 80047e4: 0018 movs r0, r3 - 80047e6: f7ff faa9 bl 8003d3c - ST7793_SendCommand(0x211,y+7); - 80047ea: 193b adds r3, r7, r4 - 80047ec: 881b ldrh r3, [r3, #0] - 80047ee: 3307 adds r3, #7 - 80047f0: b29b uxth r3, r3 - 80047f2: 4a40 ldr r2, [pc, #256] ; (80048f4 ) - 80047f4: 0019 movs r1, r3 - 80047f6: 0010 movs r0, r2 - 80047f8: f7ff faa0 bl 8003d3c - ST7793_SendCommand(0x212,x); - 80047fc: 003b movs r3, r7 - 80047fe: 881b ldrh r3, [r3, #0] - 8004800: 4a3d ldr r2, [pc, #244] ; (80048f8 ) - 8004802: 0019 movs r1, r3 - 8004804: 0010 movs r0, r2 - 8004806: f7ff fa99 bl 8003d3c - ST7793_SendCommand(0x213,x+5); - 800480a: 003b movs r3, r7 - 800480c: 881b ldrh r3, [r3, #0] - 800480e: 3305 adds r3, #5 - 8004810: b29b uxth r3, r3 - 8004812: 4a3a ldr r2, [pc, #232] ; (80048fc ) - 8004814: 0019 movs r1, r3 - 8004816: 0010 movs r0, r2 - 8004818: f7ff fa90 bl 8003d3c - ST7793_SendCommand(0x200,y); - 800481c: 193b adds r3, r7, r4 - 800481e: 881a ldrh r2, [r3, #0] - 8004820: 2380 movs r3, #128 ; 0x80 - 8004822: 009b lsls r3, r3, #2 - 8004824: 0011 movs r1, r2 - 8004826: 0018 movs r0, r3 - 8004828: f7ff fa88 bl 8003d3c - ST7793_SendCommand(0x201,x); - 800482c: 003b movs r3, r7 - 800482e: 881b ldrh r3, [r3, #0] - 8004830: 4a33 ldr r2, [pc, #204] ; (8004900 ) - 8004832: 0019 movs r1, r3 - 8004834: 0010 movs r0, r2 - 8004836: f7ff fa81 bl 8003d3c - - ST7793_COMMAND; //RS pin to command mode - 800483a: 4b32 ldr r3, [pc, #200] ; (8004904 ) - 800483c: 2200 movs r2, #0 - 800483e: 2101 movs r1, #1 - 8004840: 0018 movs r0, r3 - 8004842: f002 fff3 bl 800782c - ST7793_Write8(0x02); //send a command 0x0202 8 MSB first - 8004846: 2002 movs r0, #2 - 8004848: f7ff f9f0 bl 8003c2c - ST7793_WR_PULSE; //Pulse on the WR pin to send the same 8bits as LSB of the command - 800484c: 4b2d ldr r3, [pc, #180] ; (8004904 ) - 800484e: 2200 movs r2, #0 - 8004850: 2102 movs r1, #2 - 8004852: 0018 movs r0, r3 - 8004854: f002 ffea bl 800782c - 8004858: 4b2a ldr r3, [pc, #168] ; (8004904 ) - 800485a: 2201 movs r2, #1 - 800485c: 2102 movs r1, #2 - 800485e: 0018 movs r0, r3 - 8004860: f002 ffe4 bl 800782c - - for (i = 0; i < 8; i++) { - 8004864: 230f movs r3, #15 - 8004866: 18fb adds r3, r7, r3 - 8004868: 2200 movs r2, #0 - 800486a: 701a strb r2, [r3, #0] - 800486c: e038 b.n 80048e0 - b = thin_num[idx][i]; - 800486e: 230d movs r3, #13 - 8004870: 18fb adds r3, r7, r3 - 8004872: 7819 ldrb r1, [r3, #0] - 8004874: 230f movs r3, #15 - 8004876: 18fb adds r3, r7, r3 - 8004878: 781a ldrb r2, [r3, #0] - 800487a: 230c movs r3, #12 - 800487c: 18fb adds r3, r7, r3 - 800487e: 4822 ldr r0, [pc, #136] ; (8004908 ) - 8004880: 00c9 lsls r1, r1, #3 - 8004882: 1841 adds r1, r0, r1 - 8004884: 5c8a ldrb r2, [r1, r2] - 8004886: 701a strb r2, [r3, #0] - for (j = 0; j < 6; j++) { - 8004888: 230e movs r3, #14 - 800488a: 18fb adds r3, r7, r3 - 800488c: 2200 movs r2, #0 - 800488e: 701a strb r2, [r3, #0] - 8004890: e01b b.n 80048ca - if ((b << j) & 0x80) { - 8004892: 230c movs r3, #12 - 8004894: 18fb adds r3, r7, r3 - 8004896: 781a ldrb r2, [r3, #0] - 8004898: 230e movs r3, #14 - 800489a: 18fb adds r3, r7, r3 - 800489c: 781b ldrb r3, [r3, #0] - 800489e: 409a lsls r2, r3 - 80048a0: 0013 movs r3, r2 - 80048a2: 2280 movs r2, #128 ; 0x80 - 80048a4: 4013 ands r3, r2 - 80048a6: d005 beq.n 80048b4 - ST7793_SendData(color); - 80048a8: 1dbb adds r3, r7, #6 - 80048aa: 881b ldrh r3, [r3, #0] - 80048ac: 0018 movs r0, r3 - 80048ae: f7ff fa27 bl 8003d00 - 80048b2: e004 b.n 80048be - } else { - ST7793_SendData(bgcolor); - 80048b4: 1d3b adds r3, r7, #4 - 80048b6: 881b ldrh r3, [r3, #0] - 80048b8: 0018 movs r0, r3 - 80048ba: f7ff fa21 bl 8003d00 - for (j = 0; j < 6; j++) { - 80048be: 210e movs r1, #14 - 80048c0: 187b adds r3, r7, r1 - 80048c2: 781a ldrb r2, [r3, #0] - 80048c4: 187b adds r3, r7, r1 - 80048c6: 3201 adds r2, #1 - 80048c8: 701a strb r2, [r3, #0] - 80048ca: 230e movs r3, #14 - 80048cc: 18fb adds r3, r7, r3 - 80048ce: 781b ldrb r3, [r3, #0] - 80048d0: 2b05 cmp r3, #5 - 80048d2: d9de bls.n 8004892 - for (i = 0; i < 8; i++) { - 80048d4: 210f movs r1, #15 - 80048d6: 187b adds r3, r7, r1 - 80048d8: 781a ldrb r2, [r3, #0] - 80048da: 187b adds r3, r7, r1 - 80048dc: 3201 adds r2, #1 - 80048de: 701a strb r2, [r3, #0] - 80048e0: 230f movs r3, #15 - 80048e2: 18fb adds r3, r7, r3 - 80048e4: 781b ldrb r3, [r3, #0] - 80048e6: 2b07 cmp r3, #7 - 80048e8: d9c1 bls.n 800486e - 80048ea: e000 b.n 80048ee - if ( (c < 0x30 || c > 0x39) && c != 0x2E && c != 0xB0 && c != 0x73 ) return; // only numbers, dot and degree sign - 80048ec: 46c0 nop ; (mov r8, r8) - } - } - } - -} - 80048ee: 46bd mov sp, r7 - 80048f0: b004 add sp, #16 - 80048f2: bdb0 pop {r4, r5, r7, pc} - 80048f4: 00000211 .word 0x00000211 - 80048f8: 00000212 .word 0x00000212 - 80048fc: 00000213 .word 0x00000213 - 8004900: 00000201 .word 0x00000201 - 8004904: 50000400 .word 0x50000400 - 8004908: 08010e18 .word 0x08010e18 - -0800490c : - -//Draw a string of characters -void ST7793_DrawString(uint16_t color, uint16_t bgcolor, char *str, uint16_t x, uint16_t y) { - 800490c: b5b0 push {r4, r5, r7, lr} - 800490e: b088 sub sp, #32 - 8004910: af02 add r7, sp, #8 - 8004912: 0004 movs r4, r0 - 8004914: 0008 movs r0, r1 - 8004916: 60ba str r2, [r7, #8] - 8004918: 0019 movs r1, r3 - 800491a: 230e movs r3, #14 - 800491c: 18fb adds r3, r7, r3 - 800491e: 1c22 adds r2, r4, #0 - 8004920: 801a strh r2, [r3, #0] - 8004922: 230c movs r3, #12 - 8004924: 18fb adds r3, r7, r3 - 8004926: 1c02 adds r2, r0, #0 - 8004928: 801a strh r2, [r3, #0] - 800492a: 1dbb adds r3, r7, #6 - 800492c: 1c0a adds r2, r1, #0 - 800492e: 801a strh r2, [r3, #0] - unsigned char j = 0; - 8004930: 2317 movs r3, #23 - 8004932: 18fb adds r3, r7, r3 - 8004934: 2200 movs r2, #0 - 8004936: 701a strb r2, [r3, #0] - - while (j < strlen(str)) { - 8004938: e026 b.n 8004988 - ST7793_DrawChar(color, bgcolor, str[j], x+j*ST7793_CHAR_W*ST7793_FontSize, y); - 800493a: 2517 movs r5, #23 - 800493c: 197b adds r3, r7, r5 - 800493e: 781b ldrb r3, [r3, #0] - 8004940: 68ba ldr r2, [r7, #8] - 8004942: 18d3 adds r3, r2, r3 - 8004944: 781c ldrb r4, [r3, #0] - 8004946: 197b adds r3, r7, r5 - 8004948: 781b ldrb r3, [r3, #0] - 800494a: b29b uxth r3, r3 - 800494c: 4a16 ldr r2, [pc, #88] ; (80049a8 ) - 800494e: 7812 ldrb r2, [r2, #0] - 8004950: b292 uxth r2, r2 - 8004952: 4353 muls r3, r2 - 8004954: b29b uxth r3, r3 - 8004956: 00db lsls r3, r3, #3 - 8004958: b29a uxth r2, r3 - 800495a: 1dbb adds r3, r7, #6 - 800495c: 881b ldrh r3, [r3, #0] - 800495e: 18d3 adds r3, r2, r3 - 8004960: b29a uxth r2, r3 - 8004962: 230c movs r3, #12 - 8004964: 18fb adds r3, r7, r3 - 8004966: 8819 ldrh r1, [r3, #0] - 8004968: 230e movs r3, #14 - 800496a: 18fb adds r3, r7, r3 - 800496c: 8818 ldrh r0, [r3, #0] - 800496e: 2328 movs r3, #40 ; 0x28 - 8004970: 18fb adds r3, r7, r3 - 8004972: 881b ldrh r3, [r3, #0] - 8004974: 9300 str r3, [sp, #0] - 8004976: 0013 movs r3, r2 - 8004978: 0022 movs r2, r4 - 800497a: f7ff fdc5 bl 8004508 - j++; - 800497e: 197b adds r3, r7, r5 - 8004980: 781a ldrb r2, [r3, #0] - 8004982: 197b adds r3, r7, r5 - 8004984: 3201 adds r2, #1 - 8004986: 701a strb r2, [r3, #0] - while (j < strlen(str)) { - 8004988: 2317 movs r3, #23 - 800498a: 18fb adds r3, r7, r3 - 800498c: 781c ldrb r4, [r3, #0] - 800498e: 68bb ldr r3, [r7, #8] - 8004990: 0018 movs r0, r3 - 8004992: f7fb fbb9 bl 8000108 - 8004996: 0003 movs r3, r0 - 8004998: 429c cmp r4, r3 - 800499a: d3ce bcc.n 800493a - } -} - 800499c: 46c0 nop ; (mov r8, r8) - 800499e: 46c0 nop ; (mov r8, r8) - 80049a0: 46bd mov sp, r7 - 80049a2: b006 add sp, #24 - 80049a4: bdb0 pop {r4, r5, r7, pc} - 80049a6: 46c0 nop ; (mov r8, r8) - 80049a8: 2000003f .word 0x2000003f - -080049ac : - -//Draw a string of characters -void ST7793_DrawStringC(uint16_t color, uint16_t bgcolor, const char *str, uint16_t x, uint16_t y) { - 80049ac: b5b0 push {r4, r5, r7, lr} - 80049ae: b088 sub sp, #32 - 80049b0: af02 add r7, sp, #8 - 80049b2: 0004 movs r4, r0 - 80049b4: 0008 movs r0, r1 - 80049b6: 60ba str r2, [r7, #8] - 80049b8: 0019 movs r1, r3 - 80049ba: 230e movs r3, #14 - 80049bc: 18fb adds r3, r7, r3 - 80049be: 1c22 adds r2, r4, #0 - 80049c0: 801a strh r2, [r3, #0] - 80049c2: 230c movs r3, #12 - 80049c4: 18fb adds r3, r7, r3 - 80049c6: 1c02 adds r2, r0, #0 - 80049c8: 801a strh r2, [r3, #0] - 80049ca: 1dbb adds r3, r7, #6 - 80049cc: 1c0a adds r2, r1, #0 - 80049ce: 801a strh r2, [r3, #0] - unsigned char j = 0; - 80049d0: 2317 movs r3, #23 - 80049d2: 18fb adds r3, r7, r3 - 80049d4: 2200 movs r2, #0 - 80049d6: 701a strb r2, [r3, #0] - - while (j < strlen(str)) { - 80049d8: e026 b.n 8004a28 - ST7793_DrawChar(color, bgcolor, str[j], x+j*ST7793_CHAR_W*ST7793_FontSize, y); - 80049da: 2517 movs r5, #23 - 80049dc: 197b adds r3, r7, r5 - 80049de: 781b ldrb r3, [r3, #0] - 80049e0: 68ba ldr r2, [r7, #8] - 80049e2: 18d3 adds r3, r2, r3 - 80049e4: 781c ldrb r4, [r3, #0] - 80049e6: 197b adds r3, r7, r5 - 80049e8: 781b ldrb r3, [r3, #0] - 80049ea: b29b uxth r3, r3 - 80049ec: 4a16 ldr r2, [pc, #88] ; (8004a48 ) - 80049ee: 7812 ldrb r2, [r2, #0] - 80049f0: b292 uxth r2, r2 - 80049f2: 4353 muls r3, r2 - 80049f4: b29b uxth r3, r3 - 80049f6: 00db lsls r3, r3, #3 - 80049f8: b29a uxth r2, r3 - 80049fa: 1dbb adds r3, r7, #6 - 80049fc: 881b ldrh r3, [r3, #0] - 80049fe: 18d3 adds r3, r2, r3 - 8004a00: b29a uxth r2, r3 - 8004a02: 230c movs r3, #12 - 8004a04: 18fb adds r3, r7, r3 - 8004a06: 8819 ldrh r1, [r3, #0] - 8004a08: 230e movs r3, #14 - 8004a0a: 18fb adds r3, r7, r3 - 8004a0c: 8818 ldrh r0, [r3, #0] - 8004a0e: 2328 movs r3, #40 ; 0x28 - 8004a10: 18fb adds r3, r7, r3 - 8004a12: 881b ldrh r3, [r3, #0] - 8004a14: 9300 str r3, [sp, #0] - 8004a16: 0013 movs r3, r2 - 8004a18: 0022 movs r2, r4 - 8004a1a: f7ff fd75 bl 8004508 - j++; - 8004a1e: 197b adds r3, r7, r5 - 8004a20: 781a ldrb r2, [r3, #0] - 8004a22: 197b adds r3, r7, r5 - 8004a24: 3201 adds r2, #1 - 8004a26: 701a strb r2, [r3, #0] - while (j < strlen(str)) { - 8004a28: 2317 movs r3, #23 - 8004a2a: 18fb adds r3, r7, r3 - 8004a2c: 781c ldrb r4, [r3, #0] - 8004a2e: 68bb ldr r3, [r7, #8] - 8004a30: 0018 movs r0, r3 - 8004a32: f7fb fb69 bl 8000108 - 8004a36: 0003 movs r3, r0 - 8004a38: 429c cmp r4, r3 - 8004a3a: d3ce bcc.n 80049da - } -} - 8004a3c: 46c0 nop ; (mov r8, r8) - 8004a3e: 46c0 nop ; (mov r8, r8) - 8004a40: 46bd mov sp, r7 - 8004a42: b006 add sp, #24 - 8004a44: bdb0 pop {r4, r5, r7, pc} - 8004a46: 46c0 nop ; (mov r8, r8) - 8004a48: 2000003f .word 0x2000003f - -08004a4c : - -//Draw a string of thin number characters -void ST7793_DrawTNString(uint16_t color, uint16_t bgcolor, char *str, uint16_t x, uint16_t y) { - 8004a4c: b5b0 push {r4, r5, r7, lr} - 8004a4e: b088 sub sp, #32 - 8004a50: af02 add r7, sp, #8 - 8004a52: 0004 movs r4, r0 - 8004a54: 0008 movs r0, r1 - 8004a56: 60ba str r2, [r7, #8] - 8004a58: 0019 movs r1, r3 - 8004a5a: 230e movs r3, #14 - 8004a5c: 18fb adds r3, r7, r3 - 8004a5e: 1c22 adds r2, r4, #0 - 8004a60: 801a strh r2, [r3, #0] - 8004a62: 230c movs r3, #12 - 8004a64: 18fb adds r3, r7, r3 - 8004a66: 1c02 adds r2, r0, #0 - 8004a68: 801a strh r2, [r3, #0] - 8004a6a: 1dbb adds r3, r7, #6 - 8004a6c: 1c0a adds r2, r1, #0 - 8004a6e: 801a strh r2, [r3, #0] - unsigned char j = 0; - 8004a70: 2317 movs r3, #23 - 8004a72: 18fb adds r3, r7, r3 - 8004a74: 2200 movs r2, #0 - 8004a76: 701a strb r2, [r3, #0] - - while (j < strlen(str)) { - 8004a78: e025 b.n 8004ac6 - ST7793_DrawTNChar(color, bgcolor, str[j], x+j*6, y); - 8004a7a: 2517 movs r5, #23 - 8004a7c: 197b adds r3, r7, r5 - 8004a7e: 781b ldrb r3, [r3, #0] - 8004a80: 68ba ldr r2, [r7, #8] - 8004a82: 18d3 adds r3, r2, r3 - 8004a84: 781c ldrb r4, [r3, #0] - 8004a86: 197b adds r3, r7, r5 - 8004a88: 781b ldrb r3, [r3, #0] - 8004a8a: b29b uxth r3, r3 - 8004a8c: 1c1a adds r2, r3, #0 - 8004a8e: 1c13 adds r3, r2, #0 - 8004a90: 18db adds r3, r3, r3 - 8004a92: 189b adds r3, r3, r2 - 8004a94: 18db adds r3, r3, r3 - 8004a96: b29a uxth r2, r3 - 8004a98: 1dbb adds r3, r7, #6 - 8004a9a: 881b ldrh r3, [r3, #0] - 8004a9c: 18d3 adds r3, r2, r3 - 8004a9e: b29a uxth r2, r3 - 8004aa0: 230c movs r3, #12 - 8004aa2: 18fb adds r3, r7, r3 - 8004aa4: 8819 ldrh r1, [r3, #0] - 8004aa6: 230e movs r3, #14 - 8004aa8: 18fb adds r3, r7, r3 - 8004aaa: 8818 ldrh r0, [r3, #0] - 8004aac: 2328 movs r3, #40 ; 0x28 - 8004aae: 18fb adds r3, r7, r3 - 8004ab0: 881b ldrh r3, [r3, #0] - 8004ab2: 9300 str r3, [sp, #0] - 8004ab4: 0013 movs r3, r2 - 8004ab6: 0022 movs r2, r4 - 8004ab8: f7ff fe3c bl 8004734 - j++; - 8004abc: 197b adds r3, r7, r5 - 8004abe: 781a ldrb r2, [r3, #0] - 8004ac0: 197b adds r3, r7, r5 - 8004ac2: 3201 adds r2, #1 - 8004ac4: 701a strb r2, [r3, #0] - while (j < strlen(str)) { - 8004ac6: 2317 movs r3, #23 - 8004ac8: 18fb adds r3, r7, r3 - 8004aca: 781c ldrb r4, [r3, #0] - 8004acc: 68bb ldr r3, [r7, #8] - 8004ace: 0018 movs r0, r3 - 8004ad0: f7fb fb1a bl 8000108 - 8004ad4: 0003 movs r3, r0 - 8004ad6: 429c cmp r4, r3 - 8004ad8: d3cf bcc.n 8004a7a - } -} - 8004ada: 46c0 nop ; (mov r8, r8) - 8004adc: 46c0 nop ; (mov r8, r8) - 8004ade: 46bd mov sp, r7 - 8004ae0: b006 add sp, #24 - 8004ae2: bdb0 pop {r4, r5, r7, pc} - -08004ae4 : - -//Draw a button -void ST7793_DrawButton(uint8_t btn_type, uint16_t color, uint16_t txtcolor, uint16_t x, uint16_t y, uint16_t x2, uint16_t y2, const char *data, uint8_t func) { - 8004ae4: b5f0 push {r4, r5, r6, r7, lr} - 8004ae6: b089 sub sp, #36 ; 0x24 - 8004ae8: af02 add r7, sp, #8 - 8004aea: 0005 movs r5, r0 - 8004aec: 000c movs r4, r1 - 8004aee: 0010 movs r0, r2 - 8004af0: 0019 movs r1, r3 - 8004af2: 1dfb adds r3, r7, #7 - 8004af4: 1c2a adds r2, r5, #0 - 8004af6: 701a strb r2, [r3, #0] - 8004af8: 1d3b adds r3, r7, #4 - 8004afa: 1c22 adds r2, r4, #0 - 8004afc: 801a strh r2, [r3, #0] - 8004afe: 1cbb adds r3, r7, #2 - 8004b00: 1c02 adds r2, r0, #0 - 8004b02: 801a strh r2, [r3, #0] - 8004b04: 003b movs r3, r7 - 8004b06: 1c0a adds r2, r1, #0 - 8004b08: 801a strh r2, [r3, #0] - uint16_t color1, color2, colswp; - int16_t dx; - uint16_t dy = 0; - 8004b0a: 2312 movs r3, #18 - 8004b0c: 18fb adds r3, r7, r3 - 8004b0e: 2200 movs r2, #0 - 8004b10: 801a strh r2, [r3, #0] - uint16_t w, h; - - color1 = ((color&0xf800)-(((color&0xf800)>>2)&0xf800))|((color&0x07e0)-(((color&0x07e0)>>2)&0x07e0))|((color&0x001f)-(((color&0x001f)>>2)&0x001f)); - 8004b12: 1d3b adds r3, r7, #4 - 8004b14: 881b ldrh r3, [r3, #0] - 8004b16: 0adb lsrs r3, r3, #11 - 8004b18: 02db lsls r3, r3, #11 - 8004b1a: b29a uxth r2, r3 - 8004b1c: 1d3b adds r3, r7, #4 - 8004b1e: 881b ldrh r3, [r3, #0] - 8004b20: 109b asrs r3, r3, #2 - 8004b22: b299 uxth r1, r3 - 8004b24: 23e0 movs r3, #224 ; 0xe0 - 8004b26: 019b lsls r3, r3, #6 - 8004b28: 400b ands r3, r1 - 8004b2a: b29b uxth r3, r3 - 8004b2c: 1ad3 subs r3, r2, r3 - 8004b2e: b29b uxth r3, r3 - 8004b30: b21a sxth r2, r3 - 8004b32: 1d3b adds r3, r7, #4 - 8004b34: 8819 ldrh r1, [r3, #0] - 8004b36: 23fc movs r3, #252 ; 0xfc - 8004b38: 00db lsls r3, r3, #3 - 8004b3a: 400b ands r3, r1 - 8004b3c: b299 uxth r1, r3 - 8004b3e: 1d3b adds r3, r7, #4 - 8004b40: 881b ldrh r3, [r3, #0] - 8004b42: 109b asrs r3, r3, #2 - 8004b44: b298 uxth r0, r3 - 8004b46: 23f0 movs r3, #240 ; 0xf0 - 8004b48: 005b lsls r3, r3, #1 - 8004b4a: 4003 ands r3, r0 - 8004b4c: b29b uxth r3, r3 - 8004b4e: 1acb subs r3, r1, r3 - 8004b50: b29b uxth r3, r3 - 8004b52: b21b sxth r3, r3 - 8004b54: 4313 orrs r3, r2 - 8004b56: b21a sxth r2, r3 - 8004b58: 1d3b adds r3, r7, #4 - 8004b5a: 881b ldrh r3, [r3, #0] - 8004b5c: 211f movs r1, #31 - 8004b5e: 400b ands r3, r1 - 8004b60: b299 uxth r1, r3 - 8004b62: 1d3b adds r3, r7, #4 - 8004b64: 881b ldrh r3, [r3, #0] - 8004b66: 109b asrs r3, r3, #2 - 8004b68: b29b uxth r3, r3 - 8004b6a: 2007 movs r0, #7 - 8004b6c: 4003 ands r3, r0 - 8004b6e: b29b uxth r3, r3 - 8004b70: 1acb subs r3, r1, r3 - 8004b72: b29b uxth r3, r3 - 8004b74: b21b sxth r3, r3 - 8004b76: 4313 orrs r3, r2 - 8004b78: b21a sxth r2, r3 - 8004b7a: 230e movs r3, #14 - 8004b7c: 18fb adds r3, r7, r3 - 8004b7e: 801a strh r2, [r3, #0] - color2 = ((color&0xf800)-(((color&0xf800)>>1)&0xf800))|((color&0x07e0)-(((color&0x07e0)>>1)&0x07e0))|((color&0x001f)-(((color&0x001f)>>1)&0x001f)); - 8004b80: 1d3b adds r3, r7, #4 - 8004b82: 881b ldrh r3, [r3, #0] - 8004b84: 0adb lsrs r3, r3, #11 - 8004b86: 02db lsls r3, r3, #11 - 8004b88: b29a uxth r2, r3 - 8004b8a: 1d3b adds r3, r7, #4 - 8004b8c: 881b ldrh r3, [r3, #0] - 8004b8e: 105b asrs r3, r3, #1 - 8004b90: b299 uxth r1, r3 - 8004b92: 23f0 movs r3, #240 ; 0xf0 - 8004b94: 01db lsls r3, r3, #7 - 8004b96: 400b ands r3, r1 - 8004b98: b29b uxth r3, r3 - 8004b9a: 1ad3 subs r3, r2, r3 - 8004b9c: b29b uxth r3, r3 - 8004b9e: b21a sxth r2, r3 - 8004ba0: 1d3b adds r3, r7, #4 - 8004ba2: 8819 ldrh r1, [r3, #0] - 8004ba4: 23fc movs r3, #252 ; 0xfc - 8004ba6: 00db lsls r3, r3, #3 - 8004ba8: 400b ands r3, r1 - 8004baa: b299 uxth r1, r3 - 8004bac: 1d3b adds r3, r7, #4 - 8004bae: 881b ldrh r3, [r3, #0] - 8004bb0: 105b asrs r3, r3, #1 - 8004bb2: b298 uxth r0, r3 - 8004bb4: 23f8 movs r3, #248 ; 0xf8 - 8004bb6: 009b lsls r3, r3, #2 - 8004bb8: 4003 ands r3, r0 - 8004bba: b29b uxth r3, r3 - 8004bbc: 1acb subs r3, r1, r3 - 8004bbe: b29b uxth r3, r3 - 8004bc0: b21b sxth r3, r3 - 8004bc2: 4313 orrs r3, r2 - 8004bc4: b21a sxth r2, r3 - 8004bc6: 1d3b adds r3, r7, #4 - 8004bc8: 881b ldrh r3, [r3, #0] - 8004bca: 211f movs r1, #31 - 8004bcc: 400b ands r3, r1 - 8004bce: b299 uxth r1, r3 - 8004bd0: 1d3b adds r3, r7, #4 - 8004bd2: 881b ldrh r3, [r3, #0] - 8004bd4: 105b asrs r3, r3, #1 - 8004bd6: b29b uxth r3, r3 - 8004bd8: 200f movs r0, #15 - 8004bda: 4003 ands r3, r0 - 8004bdc: b29b uxth r3, r3 - 8004bde: 1acb subs r3, r1, r3 - 8004be0: b29b uxth r3, r3 - 8004be2: b21b sxth r3, r3 - 8004be4: 4313 orrs r3, r2 - 8004be6: b21a sxth r2, r3 - 8004be8: 2316 movs r3, #22 - 8004bea: 18fb adds r3, r7, r3 - 8004bec: 801a strh r2, [r3, #0] - - if (x2 < x) { dx=x2; x2=x; x=dx; } - 8004bee: 212c movs r1, #44 ; 0x2c - 8004bf0: 2408 movs r4, #8 - 8004bf2: 190b adds r3, r1, r4 - 8004bf4: 19da adds r2, r3, r7 - 8004bf6: 003b movs r3, r7 - 8004bf8: 8812 ldrh r2, [r2, #0] - 8004bfa: 881b ldrh r3, [r3, #0] - 8004bfc: 429a cmp r2, r3 - 8004bfe: d20e bcs.n 8004c1e - 8004c00: 2014 movs r0, #20 - 8004c02: 183b adds r3, r7, r0 - 8004c04: 190a adds r2, r1, r4 - 8004c06: 19d2 adds r2, r2, r7 - 8004c08: 8812 ldrh r2, [r2, #0] - 8004c0a: 801a strh r2, [r3, #0] - 8004c0c: 190b adds r3, r1, r4 - 8004c0e: 19db adds r3, r3, r7 - 8004c10: 003a movs r2, r7 - 8004c12: 8812 ldrh r2, [r2, #0] - 8004c14: 801a strh r2, [r3, #0] - 8004c16: 003b movs r3, r7 - 8004c18: 183a adds r2, r7, r0 - 8004c1a: 8812 ldrh r2, [r2, #0] - 8004c1c: 801a strh r2, [r3, #0] - if (y2 < y) { dx=y2; y2=y; y=dx; } - 8004c1e: 2130 movs r1, #48 ; 0x30 - 8004c20: 2508 movs r5, #8 - 8004c22: 194b adds r3, r1, r5 - 8004c24: 19da adds r2, r3, r7 - 8004c26: 2028 movs r0, #40 ; 0x28 - 8004c28: 1943 adds r3, r0, r5 - 8004c2a: 19db adds r3, r3, r7 - 8004c2c: 8812 ldrh r2, [r2, #0] - 8004c2e: 881b ldrh r3, [r3, #0] - 8004c30: 429a cmp r2, r3 - 8004c32: d210 bcs.n 8004c56 - 8004c34: 2414 movs r4, #20 - 8004c36: 193b adds r3, r7, r4 - 8004c38: 194a adds r2, r1, r5 - 8004c3a: 19d2 adds r2, r2, r7 - 8004c3c: 8812 ldrh r2, [r2, #0] - 8004c3e: 801a strh r2, [r3, #0] - 8004c40: 194b adds r3, r1, r5 - 8004c42: 19da adds r2, r3, r7 - 8004c44: 1943 adds r3, r0, r5 - 8004c46: 19db adds r3, r3, r7 - 8004c48: 881b ldrh r3, [r3, #0] - 8004c4a: 8013 strh r3, [r2, #0] - 8004c4c: 1943 adds r3, r0, r5 - 8004c4e: 19db adds r3, r3, r7 - 8004c50: 193a adds r2, r7, r4 - 8004c52: 8812 ldrh r2, [r2, #0] - 8004c54: 801a strh r2, [r3, #0] - - if (btn_type == BTN_TEXT) dx = (x2-x-strlen(data)*ST7793_CHAR_W*ST7793_FontSize)>>1; - 8004c56: 1dfb adds r3, r7, #7 - 8004c58: 781b ldrb r3, [r3, #0] - 8004c5a: 2b00 cmp r3, #0 - 8004c5c: d116 bne.n 8004c8c - 8004c5e: 232c movs r3, #44 ; 0x2c - 8004c60: 2208 movs r2, #8 - 8004c62: 189b adds r3, r3, r2 - 8004c64: 19db adds r3, r3, r7 - 8004c66: 881a ldrh r2, [r3, #0] - 8004c68: 003b movs r3, r7 - 8004c6a: 881b ldrh r3, [r3, #0] - 8004c6c: 1ad3 subs r3, r2, r3 - 8004c6e: 001c movs r4, r3 - 8004c70: 6bfb ldr r3, [r7, #60] ; 0x3c - 8004c72: 0018 movs r0, r3 - 8004c74: f7fb fa48 bl 8000108 - 8004c78: 0002 movs r2, r0 - 8004c7a: 4b2c ldr r3, [pc, #176] ; (8004d2c ) - 8004c7c: 781b ldrb r3, [r3, #0] - 8004c7e: 4353 muls r3, r2 - 8004c80: 00db lsls r3, r3, #3 - 8004c82: 1ae3 subs r3, r4, r3 - 8004c84: 085a lsrs r2, r3, #1 - 8004c86: 2314 movs r3, #20 - 8004c88: 18fb adds r3, r7, r3 - 8004c8a: 801a strh r2, [r3, #0] - if (btn_type == BTN_ICON) { - 8004c8c: 1dfb adds r3, r7, #7 - 8004c8e: 781b ldrb r3, [r3, #0] - 8004c90: 2b01 cmp r3, #1 - 8004c92: d129 bne.n 8004ce8 - w = (data[0] << 8) | data[1]; - 8004c94: 6bfb ldr r3, [r7, #60] ; 0x3c - 8004c96: 781b ldrb r3, [r3, #0] - 8004c98: 021b lsls r3, r3, #8 - 8004c9a: b21a sxth r2, r3 - 8004c9c: 6bfb ldr r3, [r7, #60] ; 0x3c - 8004c9e: 3301 adds r3, #1 - 8004ca0: 781b ldrb r3, [r3, #0] - 8004ca2: b21b sxth r3, r3 - 8004ca4: 4313 orrs r3, r2 - 8004ca6: b21a sxth r2, r3 - 8004ca8: 210c movs r1, #12 - 8004caa: 187b adds r3, r7, r1 - 8004cac: 801a strh r2, [r3, #0] - h = (data[2] << 8) | data[3]; - 8004cae: 6bfb ldr r3, [r7, #60] ; 0x3c - 8004cb0: 3302 adds r3, #2 - 8004cb2: 781b ldrb r3, [r3, #0] - 8004cb4: 021b lsls r3, r3, #8 - 8004cb6: b21a sxth r2, r3 - 8004cb8: 6bfb ldr r3, [r7, #60] ; 0x3c - 8004cba: 3303 adds r3, #3 - 8004cbc: 781b ldrb r3, [r3, #0] - 8004cbe: b21b sxth r3, r3 - 8004cc0: 4313 orrs r3, r2 - 8004cc2: b21a sxth r2, r3 - 8004cc4: 2310 movs r3, #16 - 8004cc6: 18fb adds r3, r7, r3 - 8004cc8: 801a strh r2, [r3, #0] - dx = (x2 - x - w) >> 1; - 8004cca: 232c movs r3, #44 ; 0x2c - 8004ccc: 2208 movs r2, #8 - 8004cce: 189b adds r3, r3, r2 - 8004cd0: 19db adds r3, r3, r7 - 8004cd2: 881a ldrh r2, [r3, #0] - 8004cd4: 003b movs r3, r7 - 8004cd6: 881b ldrh r3, [r3, #0] - 8004cd8: 1ad2 subs r2, r2, r3 - 8004cda: 187b adds r3, r7, r1 - 8004cdc: 881b ldrh r3, [r3, #0] - 8004cde: 1ad3 subs r3, r2, r3 - 8004ce0: 105a asrs r2, r3, #1 - 8004ce2: 2314 movs r3, #20 - 8004ce4: 18fb adds r3, r7, r3 - 8004ce6: 801a strh r2, [r3, #0] - } - if (func) { - 8004ce8: 2338 movs r3, #56 ; 0x38 - 8004cea: 2208 movs r2, #8 - 8004cec: 189b adds r3, r3, r2 - 8004cee: 19db adds r3, r3, r7 - 8004cf0: 781b ldrb r3, [r3, #0] - 8004cf2: 2b00 cmp r3, #0 - 8004cf4: d01c beq.n 8004d30 - colswp = color; - 8004cf6: 210a movs r1, #10 - 8004cf8: 187b adds r3, r7, r1 - 8004cfa: 1d3a adds r2, r7, #4 - 8004cfc: 8812 ldrh r2, [r2, #0] - 8004cfe: 801a strh r2, [r3, #0] - color = color2; - 8004d00: 1d3b adds r3, r7, #4 - 8004d02: 2016 movs r0, #22 - 8004d04: 183a adds r2, r7, r0 - 8004d06: 8812 ldrh r2, [r2, #0] - 8004d08: 801a strh r2, [r3, #0] - color2 = colswp; - 8004d0a: 183b adds r3, r7, r0 - 8004d0c: 187a adds r2, r7, r1 - 8004d0e: 8812 ldrh r2, [r2, #0] - 8004d10: 801a strh r2, [r3, #0] - dx += 2; - 8004d12: 2114 movs r1, #20 - 8004d14: 187b adds r3, r7, r1 - 8004d16: 881b ldrh r3, [r3, #0] - 8004d18: 3302 adds r3, #2 - 8004d1a: b29a uxth r2, r3 - 8004d1c: 187b adds r3, r7, r1 - 8004d1e: 801a strh r2, [r3, #0] - dy = 2; - 8004d20: 2312 movs r3, #18 - 8004d22: 18fb adds r3, r7, r3 - 8004d24: 2202 movs r2, #2 - 8004d26: 801a strh r2, [r3, #0] - 8004d28: e002 b.n 8004d30 - 8004d2a: 46c0 nop ; (mov r8, r8) - 8004d2c: 2000003f .word 0x2000003f - } - - ST7793_DrawLine(color,x,y,x2-1,y); - 8004d30: 252c movs r5, #44 ; 0x2c - 8004d32: 2208 movs r2, #8 - 8004d34: 18ab adds r3, r5, r2 - 8004d36: 19db adds r3, r3, r7 - 8004d38: 881b ldrh r3, [r3, #0] - 8004d3a: 3b01 subs r3, #1 - 8004d3c: b29c uxth r4, r3 - 8004d3e: 2628 movs r6, #40 ; 0x28 - 8004d40: 18b1 adds r1, r6, r2 - 8004d42: 19cb adds r3, r1, r7 - 8004d44: 881a ldrh r2, [r3, #0] - 8004d46: 003b movs r3, r7 - 8004d48: 8819 ldrh r1, [r3, #0] - 8004d4a: 1d3b adds r3, r7, #4 - 8004d4c: 8818 ldrh r0, [r3, #0] - 8004d4e: 2308 movs r3, #8 - 8004d50: 18f3 adds r3, r6, r3 - 8004d52: 19db adds r3, r3, r7 - 8004d54: 881b ldrh r3, [r3, #0] - 8004d56: 9300 str r3, [sp, #0] - 8004d58: 0023 movs r3, r4 - 8004d5a: f7ff fad7 bl 800430c - ST7793_DrawLine(color,x,y+1,x2-2,y+1); - 8004d5e: 2208 movs r2, #8 - 8004d60: 18b3 adds r3, r6, r2 - 8004d62: 19db adds r3, r3, r7 - 8004d64: 881b ldrh r3, [r3, #0] - 8004d66: 3301 adds r3, #1 - 8004d68: b29c uxth r4, r3 - 8004d6a: 18ab adds r3, r5, r2 - 8004d6c: 19db adds r3, r3, r7 - 8004d6e: 881b ldrh r3, [r3, #0] - 8004d70: 3b02 subs r3, #2 - 8004d72: b29d uxth r5, r3 - 8004d74: 18b3 adds r3, r6, r2 - 8004d76: 19db adds r3, r3, r7 - 8004d78: 881b ldrh r3, [r3, #0] - 8004d7a: 3301 adds r3, #1 - 8004d7c: b29b uxth r3, r3 - 8004d7e: 003a movs r2, r7 - 8004d80: 8811 ldrh r1, [r2, #0] - 8004d82: 1d3a adds r2, r7, #4 - 8004d84: 8810 ldrh r0, [r2, #0] - 8004d86: 9300 str r3, [sp, #0] - 8004d88: 002b movs r3, r5 - 8004d8a: 0022 movs r2, r4 - 8004d8c: f7ff fabe bl 800430c - ST7793_DrawLine(color,x,y+2,x2-3,y+2); - 8004d90: 2208 movs r2, #8 - 8004d92: 18b3 adds r3, r6, r2 - 8004d94: 19db adds r3, r3, r7 - 8004d96: 881b ldrh r3, [r3, #0] - 8004d98: 3302 adds r3, #2 - 8004d9a: b29c uxth r4, r3 - 8004d9c: 252c movs r5, #44 ; 0x2c - 8004d9e: 18ab adds r3, r5, r2 - 8004da0: 19db adds r3, r3, r7 - 8004da2: 881b ldrh r3, [r3, #0] - 8004da4: 3b03 subs r3, #3 - 8004da6: b29d uxth r5, r3 - 8004da8: 18b3 adds r3, r6, r2 - 8004daa: 19db adds r3, r3, r7 - 8004dac: 881b ldrh r3, [r3, #0] - 8004dae: 3302 adds r3, #2 - 8004db0: b29b uxth r3, r3 - 8004db2: 003a movs r2, r7 - 8004db4: 8811 ldrh r1, [r2, #0] - 8004db6: 1d3a adds r2, r7, #4 - 8004db8: 8810 ldrh r0, [r2, #0] - 8004dba: 9300 str r3, [sp, #0] - 8004dbc: 002b movs r3, r5 - 8004dbe: 0022 movs r2, r4 - 8004dc0: f7ff faa4 bl 800430c - - ST7793_DrawLine(color,x,y+3,x,y2-1); - 8004dc4: 2208 movs r2, #8 - 8004dc6: 18b3 adds r3, r6, r2 - 8004dc8: 19db adds r3, r3, r7 - 8004dca: 881b ldrh r3, [r3, #0] - 8004dcc: 3303 adds r3, #3 - 8004dce: b29c uxth r4, r3 - 8004dd0: 2330 movs r3, #48 ; 0x30 - 8004dd2: 189b adds r3, r3, r2 - 8004dd4: 19db adds r3, r3, r7 - 8004dd6: 881b ldrh r3, [r3, #0] - 8004dd8: 3b01 subs r3, #1 - 8004dda: b29b uxth r3, r3 - 8004ddc: 003a movs r2, r7 - 8004dde: 8815 ldrh r5, [r2, #0] - 8004de0: 003a movs r2, r7 - 8004de2: 8811 ldrh r1, [r2, #0] - 8004de4: 1d3a adds r2, r7, #4 - 8004de6: 8810 ldrh r0, [r2, #0] - 8004de8: 9300 str r3, [sp, #0] - 8004dea: 002b movs r3, r5 - 8004dec: 0022 movs r2, r4 - 8004dee: f7ff fa8d bl 800430c - ST7793_DrawLine(color,x+1,y+3,x+1,y2-2); - 8004df2: 003b movs r3, r7 - 8004df4: 881b ldrh r3, [r3, #0] - 8004df6: 3301 adds r3, #1 - 8004df8: b299 uxth r1, r3 - 8004dfa: 2208 movs r2, #8 - 8004dfc: 18b3 adds r3, r6, r2 - 8004dfe: 19db adds r3, r3, r7 - 8004e00: 881b ldrh r3, [r3, #0] - 8004e02: 3303 adds r3, #3 - 8004e04: b29c uxth r4, r3 - 8004e06: 003b movs r3, r7 - 8004e08: 881b ldrh r3, [r3, #0] - 8004e0a: 3301 adds r3, #1 - 8004e0c: b29d uxth r5, r3 - 8004e0e: 2330 movs r3, #48 ; 0x30 - 8004e10: 189b adds r3, r3, r2 - 8004e12: 19db adds r3, r3, r7 - 8004e14: 881b ldrh r3, [r3, #0] - 8004e16: 3b02 subs r3, #2 - 8004e18: b29b uxth r3, r3 - 8004e1a: 1d3a adds r2, r7, #4 - 8004e1c: 8810 ldrh r0, [r2, #0] - 8004e1e: 9300 str r3, [sp, #0] - 8004e20: 002b movs r3, r5 - 8004e22: 0022 movs r2, r4 - 8004e24: f7ff fa72 bl 800430c - ST7793_DrawLine(color,x+2,y+3,x+2,y2-3); - 8004e28: 003b movs r3, r7 - 8004e2a: 881b ldrh r3, [r3, #0] - 8004e2c: 3302 adds r3, #2 - 8004e2e: b299 uxth r1, r3 - 8004e30: 2208 movs r2, #8 - 8004e32: 18b3 adds r3, r6, r2 - 8004e34: 19db adds r3, r3, r7 - 8004e36: 881b ldrh r3, [r3, #0] - 8004e38: 3303 adds r3, #3 - 8004e3a: b29c uxth r4, r3 - 8004e3c: 003b movs r3, r7 - 8004e3e: 881b ldrh r3, [r3, #0] - 8004e40: 3302 adds r3, #2 - 8004e42: b29d uxth r5, r3 - 8004e44: 2330 movs r3, #48 ; 0x30 - 8004e46: 189b adds r3, r3, r2 - 8004e48: 19db adds r3, r3, r7 - 8004e4a: 881b ldrh r3, [r3, #0] - 8004e4c: 3b03 subs r3, #3 - 8004e4e: b29b uxth r3, r3 - 8004e50: 1d3a adds r2, r7, #4 - 8004e52: 8810 ldrh r0, [r2, #0] - 8004e54: 9300 str r3, [sp, #0] - 8004e56: 002b movs r3, r5 - 8004e58: 0022 movs r2, r4 - 8004e5a: f7ff fa57 bl 800430c - - ST7793_DrawLine(color2,x,y2,x2-1,y2); - 8004e5e: 222c movs r2, #44 ; 0x2c - 8004e60: 2008 movs r0, #8 - 8004e62: 1813 adds r3, r2, r0 - 8004e64: 19db adds r3, r3, r7 - 8004e66: 881b ldrh r3, [r3, #0] - 8004e68: 3b01 subs r3, #1 - 8004e6a: b29c uxth r4, r3 - 8004e6c: 2530 movs r5, #48 ; 0x30 - 8004e6e: 182a adds r2, r5, r0 - 8004e70: 19d3 adds r3, r2, r7 - 8004e72: 881a ldrh r2, [r3, #0] - 8004e74: 003b movs r3, r7 - 8004e76: 8819 ldrh r1, [r3, #0] - 8004e78: 2316 movs r3, #22 - 8004e7a: 18fb adds r3, r7, r3 - 8004e7c: 8818 ldrh r0, [r3, #0] - 8004e7e: 2308 movs r3, #8 - 8004e80: 18eb adds r3, r5, r3 - 8004e82: 19db adds r3, r3, r7 - 8004e84: 881b ldrh r3, [r3, #0] - 8004e86: 9300 str r3, [sp, #0] - 8004e88: 0023 movs r3, r4 - 8004e8a: f7ff fa3f bl 800430c - ST7793_DrawLine(color2,x+1,y2-1,x2-1,y2-1); - 8004e8e: 003b movs r3, r7 - 8004e90: 881b ldrh r3, [r3, #0] - 8004e92: 3301 adds r3, #1 - 8004e94: b299 uxth r1, r3 - 8004e96: 002a movs r2, r5 - 8004e98: 2008 movs r0, #8 - 8004e9a: 1813 adds r3, r2, r0 - 8004e9c: 19db adds r3, r3, r7 - 8004e9e: 881b ldrh r3, [r3, #0] - 8004ea0: 3b01 subs r3, #1 - 8004ea2: b29c uxth r4, r3 - 8004ea4: 252c movs r5, #44 ; 0x2c - 8004ea6: 182b adds r3, r5, r0 - 8004ea8: 19db adds r3, r3, r7 - 8004eaa: 881b ldrh r3, [r3, #0] - 8004eac: 3b01 subs r3, #1 - 8004eae: b29d uxth r5, r3 - 8004eb0: 1813 adds r3, r2, r0 - 8004eb2: 19db adds r3, r3, r7 - 8004eb4: 881b ldrh r3, [r3, #0] - 8004eb6: 3b01 subs r3, #1 - 8004eb8: b29b uxth r3, r3 - 8004eba: 2016 movs r0, #22 - 8004ebc: 183a adds r2, r7, r0 - 8004ebe: 8810 ldrh r0, [r2, #0] - 8004ec0: 9300 str r3, [sp, #0] - 8004ec2: 002b movs r3, r5 - 8004ec4: 0022 movs r2, r4 - 8004ec6: f7ff fa21 bl 800430c - ST7793_DrawLine(color2,x+2,y2-2,x2-1,y2-2); - 8004eca: 003b movs r3, r7 - 8004ecc: 881b ldrh r3, [r3, #0] - 8004ece: 3302 adds r3, #2 - 8004ed0: b299 uxth r1, r3 - 8004ed2: 2230 movs r2, #48 ; 0x30 - 8004ed4: 2008 movs r0, #8 - 8004ed6: 1813 adds r3, r2, r0 - 8004ed8: 19db adds r3, r3, r7 - 8004eda: 881b ldrh r3, [r3, #0] - 8004edc: 3b02 subs r3, #2 - 8004ede: b29c uxth r4, r3 - 8004ee0: 252c movs r5, #44 ; 0x2c - 8004ee2: 182b adds r3, r5, r0 - 8004ee4: 19db adds r3, r3, r7 - 8004ee6: 881b ldrh r3, [r3, #0] - 8004ee8: 3b01 subs r3, #1 - 8004eea: b29d uxth r5, r3 - 8004eec: 1813 adds r3, r2, r0 - 8004eee: 19db adds r3, r3, r7 - 8004ef0: 881b ldrh r3, [r3, #0] - 8004ef2: 3b02 subs r3, #2 - 8004ef4: b29b uxth r3, r3 - 8004ef6: 2016 movs r0, #22 - 8004ef8: 183a adds r2, r7, r0 - 8004efa: 8810 ldrh r0, [r2, #0] - 8004efc: 9300 str r3, [sp, #0] - 8004efe: 002b movs r3, r5 - 8004f00: 0022 movs r2, r4 - 8004f02: f7ff fa03 bl 800430c - - ST7793_DrawLine(color2,x2-3,y+3,x2-3,y2-3); - 8004f06: 202c movs r0, #44 ; 0x2c - 8004f08: 2208 movs r2, #8 - 8004f0a: 1883 adds r3, r0, r2 - 8004f0c: 19db adds r3, r3, r7 - 8004f0e: 881b ldrh r3, [r3, #0] - 8004f10: 3b03 subs r3, #3 - 8004f12: b299 uxth r1, r3 - 8004f14: 18b3 adds r3, r6, r2 - 8004f16: 19db adds r3, r3, r7 - 8004f18: 881b ldrh r3, [r3, #0] - 8004f1a: 3303 adds r3, #3 - 8004f1c: b29c uxth r4, r3 - 8004f1e: 1880 adds r0, r0, r2 - 8004f20: 19c3 adds r3, r0, r7 - 8004f22: 881b ldrh r3, [r3, #0] - 8004f24: 3b03 subs r3, #3 - 8004f26: b29d uxth r5, r3 - 8004f28: 2230 movs r2, #48 ; 0x30 - 8004f2a: 2308 movs r3, #8 - 8004f2c: 18d0 adds r0, r2, r3 - 8004f2e: 19c3 adds r3, r0, r7 - 8004f30: 881b ldrh r3, [r3, #0] - 8004f32: 3b03 subs r3, #3 - 8004f34: b29b uxth r3, r3 - 8004f36: 2216 movs r2, #22 - 8004f38: 18ba adds r2, r7, r2 - 8004f3a: 8810 ldrh r0, [r2, #0] - 8004f3c: 9300 str r3, [sp, #0] - 8004f3e: 002b movs r3, r5 - 8004f40: 0022 movs r2, r4 - 8004f42: f7ff f9e3 bl 800430c - ST7793_DrawLine(color2,x2-2,y+2,x2-2,y2-3); - 8004f46: 202c movs r0, #44 ; 0x2c - 8004f48: 2208 movs r2, #8 - 8004f4a: 1883 adds r3, r0, r2 - 8004f4c: 19db adds r3, r3, r7 - 8004f4e: 881b ldrh r3, [r3, #0] - 8004f50: 3b02 subs r3, #2 - 8004f52: b299 uxth r1, r3 - 8004f54: 18b3 adds r3, r6, r2 - 8004f56: 19db adds r3, r3, r7 - 8004f58: 881b ldrh r3, [r3, #0] - 8004f5a: 3302 adds r3, #2 - 8004f5c: b29c uxth r4, r3 - 8004f5e: 1880 adds r0, r0, r2 - 8004f60: 19c3 adds r3, r0, r7 - 8004f62: 881b ldrh r3, [r3, #0] - 8004f64: 3b02 subs r3, #2 - 8004f66: b29d uxth r5, r3 - 8004f68: 2230 movs r2, #48 ; 0x30 - 8004f6a: 2308 movs r3, #8 - 8004f6c: 18d0 adds r0, r2, r3 - 8004f6e: 19c3 adds r3, r0, r7 - 8004f70: 881b ldrh r3, [r3, #0] - 8004f72: 3b03 subs r3, #3 - 8004f74: b29b uxth r3, r3 - 8004f76: 2216 movs r2, #22 - 8004f78: 18ba adds r2, r7, r2 - 8004f7a: 8810 ldrh r0, [r2, #0] - 8004f7c: 9300 str r3, [sp, #0] - 8004f7e: 002b movs r3, r5 - 8004f80: 0022 movs r2, r4 - 8004f82: f7ff f9c3 bl 800430c - ST7793_DrawLine(color2,x2-1,y+1,x2-1,y2-3); - 8004f86: 202c movs r0, #44 ; 0x2c - 8004f88: 2208 movs r2, #8 - 8004f8a: 1883 adds r3, r0, r2 - 8004f8c: 19db adds r3, r3, r7 - 8004f8e: 881b ldrh r3, [r3, #0] - 8004f90: 3b01 subs r3, #1 - 8004f92: b299 uxth r1, r3 - 8004f94: 18b3 adds r3, r6, r2 - 8004f96: 19db adds r3, r3, r7 - 8004f98: 881b ldrh r3, [r3, #0] - 8004f9a: 3301 adds r3, #1 - 8004f9c: b29c uxth r4, r3 - 8004f9e: 1880 adds r0, r0, r2 - 8004fa0: 19c3 adds r3, r0, r7 - 8004fa2: 881b ldrh r3, [r3, #0] - 8004fa4: 3b01 subs r3, #1 - 8004fa6: b29d uxth r5, r3 - 8004fa8: 2230 movs r2, #48 ; 0x30 - 8004faa: 2308 movs r3, #8 - 8004fac: 18d0 adds r0, r2, r3 - 8004fae: 19c3 adds r3, r0, r7 - 8004fb0: 881b ldrh r3, [r3, #0] - 8004fb2: 3b03 subs r3, #3 - 8004fb4: b29b uxth r3, r3 - 8004fb6: 2216 movs r2, #22 - 8004fb8: 18ba adds r2, r7, r2 - 8004fba: 8810 ldrh r0, [r2, #0] - 8004fbc: 9300 str r3, [sp, #0] - 8004fbe: 002b movs r3, r5 - 8004fc0: 0022 movs r2, r4 - 8004fc2: f7ff f9a3 bl 800430c - - ST7793_FillRect(color1,x+3,y+3,x2-4,y2-3); - 8004fc6: 003b movs r3, r7 - 8004fc8: 881b ldrh r3, [r3, #0] - 8004fca: 3303 adds r3, #3 - 8004fcc: b299 uxth r1, r3 - 8004fce: 2208 movs r2, #8 - 8004fd0: 18b3 adds r3, r6, r2 - 8004fd2: 19db adds r3, r3, r7 - 8004fd4: 881b ldrh r3, [r3, #0] - 8004fd6: 3303 adds r3, #3 - 8004fd8: b29c uxth r4, r3 - 8004fda: 202c movs r0, #44 ; 0x2c - 8004fdc: 1883 adds r3, r0, r2 - 8004fde: 19db adds r3, r3, r7 - 8004fe0: 881b ldrh r3, [r3, #0] - 8004fe2: 3b04 subs r3, #4 - 8004fe4: b29d uxth r5, r3 - 8004fe6: 2230 movs r2, #48 ; 0x30 - 8004fe8: 2008 movs r0, #8 - 8004fea: 1813 adds r3, r2, r0 - 8004fec: 19db adds r3, r3, r7 - 8004fee: 881b ldrh r3, [r3, #0] - 8004ff0: 3b03 subs r3, #3 - 8004ff2: b29b uxth r3, r3 - 8004ff4: 200e movs r0, #14 - 8004ff6: 183a adds r2, r7, r0 - 8004ff8: 8810 ldrh r0, [r2, #0] - 8004ffa: 9300 str r3, [sp, #0] - 8004ffc: 002b movs r3, r5 - 8004ffe: 0022 movs r2, r4 - 8005000: f7ff f882 bl 8004108 - - if (btn_type == BTN_TEXT) ST7793_DrawStringC(txtcolor,color1,data,x+dx,y+((y2-y-ST7793_CHAR_H*ST7793_FontSize)>>1)+dy); - 8005004: 1dfb adds r3, r7, #7 - 8005006: 781b ldrb r3, [r3, #0] - 8005008: 2b00 cmp r3, #0 - 800500a: d12e bne.n 800506a - 800500c: 2314 movs r3, #20 - 800500e: 18fb adds r3, r7, r3 - 8005010: 881a ldrh r2, [r3, #0] - 8005012: 003b movs r3, r7 - 8005014: 881b ldrh r3, [r3, #0] - 8005016: 18d3 adds r3, r2, r3 - 8005018: b29d uxth r5, r3 - 800501a: 2230 movs r2, #48 ; 0x30 - 800501c: 2008 movs r0, #8 - 800501e: 1813 adds r3, r2, r0 - 8005020: 19db adds r3, r3, r7 - 8005022: 881a ldrh r2, [r3, #0] - 8005024: 1833 adds r3, r6, r0 - 8005026: 19db adds r3, r3, r7 - 8005028: 881b ldrh r3, [r3, #0] - 800502a: 1ad2 subs r2, r2, r3 - 800502c: 4b29 ldr r3, [pc, #164] ; (80050d4 ) - 800502e: 781b ldrb r3, [r3, #0] - 8005030: 0019 movs r1, r3 - 8005032: 000b movs r3, r1 - 8005034: 0089 lsls r1, r1, #2 - 8005036: 1a5b subs r3, r3, r1 - 8005038: 009b lsls r3, r3, #2 - 800503a: 18d3 adds r3, r2, r3 - 800503c: 105b asrs r3, r3, #1 - 800503e: b29a uxth r2, r3 - 8005040: 1833 adds r3, r6, r0 - 8005042: 19db adds r3, r3, r7 - 8005044: 881b ldrh r3, [r3, #0] - 8005046: 18d3 adds r3, r2, r3 - 8005048: b29a uxth r2, r3 - 800504a: 2312 movs r3, #18 - 800504c: 18fb adds r3, r7, r3 - 800504e: 881b ldrh r3, [r3, #0] - 8005050: 18d3 adds r3, r2, r3 - 8005052: b29b uxth r3, r3 - 8005054: 6bfc ldr r4, [r7, #60] ; 0x3c - 8005056: 200e movs r0, #14 - 8005058: 183a adds r2, r7, r0 - 800505a: 8811 ldrh r1, [r2, #0] - 800505c: 1cba adds r2, r7, #2 - 800505e: 8810 ldrh r0, [r2, #0] - 8005060: 9300 str r3, [sp, #0] - 8005062: 002b movs r3, r5 - 8005064: 0022 movs r2, r4 - 8005066: f7ff fca1 bl 80049ac - if (btn_type == BTN_ICON) ST7793_Draw1bBitmap(txtcolor, color1, x+dx, y+((y2-y-h)>>1)+dy, data); - 800506a: 1dfb adds r3, r7, #7 - 800506c: 781b ldrb r3, [r3, #0] - 800506e: 2b01 cmp r3, #1 - 8005070: d12b bne.n 80050ca - 8005072: 2314 movs r3, #20 - 8005074: 18fb adds r3, r7, r3 - 8005076: 881a ldrh r2, [r3, #0] - 8005078: 003b movs r3, r7 - 800507a: 881b ldrh r3, [r3, #0] - 800507c: 18d3 adds r3, r2, r3 - 800507e: b29c uxth r4, r3 - 8005080: 2330 movs r3, #48 ; 0x30 - 8005082: 2008 movs r0, #8 - 8005084: 181b adds r3, r3, r0 - 8005086: 19db adds r3, r3, r7 - 8005088: 881a ldrh r2, [r3, #0] - 800508a: 2128 movs r1, #40 ; 0x28 - 800508c: 180b adds r3, r1, r0 - 800508e: 19db adds r3, r3, r7 - 8005090: 881b ldrh r3, [r3, #0] - 8005092: 1ad2 subs r2, r2, r3 - 8005094: 2310 movs r3, #16 - 8005096: 18fb adds r3, r7, r3 - 8005098: 881b ldrh r3, [r3, #0] - 800509a: 1ad3 subs r3, r2, r3 - 800509c: 105b asrs r3, r3, #1 - 800509e: b29a uxth r2, r3 - 80050a0: 180b adds r3, r1, r0 - 80050a2: 19db adds r3, r3, r7 - 80050a4: 881b ldrh r3, [r3, #0] - 80050a6: 18d3 adds r3, r2, r3 - 80050a8: b29a uxth r2, r3 - 80050aa: 2312 movs r3, #18 - 80050ac: 18fb adds r3, r7, r3 - 80050ae: 881b ldrh r3, [r3, #0] - 80050b0: 18d3 adds r3, r2, r3 - 80050b2: b29a uxth r2, r3 - 80050b4: 230e movs r3, #14 - 80050b6: 18fb adds r3, r7, r3 - 80050b8: 8819 ldrh r1, [r3, #0] - 80050ba: 1cbb adds r3, r7, #2 - 80050bc: 8818 ldrh r0, [r3, #0] - 80050be: 6bfb ldr r3, [r7, #60] ; 0x3c - 80050c0: 9300 str r3, [sp, #0] - 80050c2: 0013 movs r3, r2 - 80050c4: 0022 movs r2, r4 - 80050c6: f000 f807 bl 80050d8 -} - 80050ca: 46c0 nop ; (mov r8, r8) - 80050cc: 46bd mov sp, r7 - 80050ce: b007 add sp, #28 - 80050d0: bdf0 pop {r4, r5, r6, r7, pc} - 80050d2: 46c0 nop ; (mov r8, r8) - 80050d4: 2000003f .word 0x2000003f - -080050d8 : - -//Draw 1-bit bitmap -void ST7793_Draw1bBitmap(uint16_t color, uint16_t bgcolor, uint16_t x, uint16_t y, const char *data) { - 80050d8: b5b0 push {r4, r5, r7, lr} - 80050da: b086 sub sp, #24 - 80050dc: af00 add r7, sp, #0 - 80050de: 0005 movs r5, r0 - 80050e0: 000c movs r4, r1 - 80050e2: 0010 movs r0, r2 - 80050e4: 0019 movs r1, r3 - 80050e6: 1dbb adds r3, r7, #6 - 80050e8: 1c2a adds r2, r5, #0 - 80050ea: 801a strh r2, [r3, #0] - 80050ec: 1d3b adds r3, r7, #4 - 80050ee: 1c22 adds r2, r4, #0 - 80050f0: 801a strh r2, [r3, #0] - 80050f2: 1cbb adds r3, r7, #2 - 80050f4: 1c02 adds r2, r0, #0 - 80050f6: 801a strh r2, [r3, #0] - 80050f8: 003b movs r3, r7 - 80050fa: 1c0a adds r2, r1, #0 - 80050fc: 801a strh r2, [r3, #0] - color = ~color; - 80050fe: 1dbb adds r3, r7, #6 - 8005100: 1dba adds r2, r7, #6 - 8005102: 8812 ldrh r2, [r2, #0] - 8005104: 43d2 mvns r2, r2 - 8005106: 801a strh r2, [r3, #0] - bgcolor = ~bgcolor; - 8005108: 1d3b adds r3, r7, #4 - 800510a: 1d3a adds r2, r7, #4 - 800510c: 8812 ldrh r2, [r2, #0] - 800510e: 43d2 mvns r2, r2 - 8005110: 801a strh r2, [r3, #0] - uint16_t w = 0; - 8005112: 2410 movs r4, #16 - 8005114: 193b adds r3, r7, r4 - 8005116: 2200 movs r2, #0 - 8005118: 801a strh r2, [r3, #0] - uint16_t h = 0; - 800511a: 210e movs r1, #14 - 800511c: 187b adds r3, r7, r1 - 800511e: 2200 movs r2, #0 - 8005120: 801a strh r2, [r3, #0] - uint16_t i, j, bc; - - w = (data[0] << 8) | data[1]; - 8005122: 6abb ldr r3, [r7, #40] ; 0x28 - 8005124: 781b ldrb r3, [r3, #0] - 8005126: 021b lsls r3, r3, #8 - 8005128: b21a sxth r2, r3 - 800512a: 6abb ldr r3, [r7, #40] ; 0x28 - 800512c: 3301 adds r3, #1 - 800512e: 781b ldrb r3, [r3, #0] - 8005130: b21b sxth r3, r3 - 8005132: 4313 orrs r3, r2 - 8005134: b21a sxth r2, r3 - 8005136: 193b adds r3, r7, r4 - 8005138: 801a strh r2, [r3, #0] - h = (data[2] << 8) | data[3]; - 800513a: 6abb ldr r3, [r7, #40] ; 0x28 - 800513c: 3302 adds r3, #2 - 800513e: 781b ldrb r3, [r3, #0] - 8005140: 021b lsls r3, r3, #8 - 8005142: b21a sxth r2, r3 - 8005144: 6abb ldr r3, [r7, #40] ; 0x28 - 8005146: 3303 adds r3, #3 - 8005148: 781b ldrb r3, [r3, #0] - 800514a: b21b sxth r3, r3 - 800514c: 4313 orrs r3, r2 - 800514e: b21a sxth r2, r3 - 8005150: 000d movs r5, r1 - 8005152: 187b adds r3, r7, r1 - 8005154: 801a strh r2, [r3, #0] - - //Set screen window and start coordinates - ST7793_SendCommand(0x210,y); - 8005156: 003b movs r3, r7 - 8005158: 881a ldrh r2, [r3, #0] - 800515a: 2384 movs r3, #132 ; 0x84 - 800515c: 009b lsls r3, r3, #2 - 800515e: 0011 movs r1, r2 - 8005160: 0018 movs r0, r3 - 8005162: f7fe fdeb bl 8003d3c - ST7793_SendCommand(0x211,y+h-1); - 8005166: 003a movs r2, r7 - 8005168: 197b adds r3, r7, r5 - 800516a: 8812 ldrh r2, [r2, #0] - 800516c: 881b ldrh r3, [r3, #0] - 800516e: 18d3 adds r3, r2, r3 - 8005170: b29b uxth r3, r3 - 8005172: 3b01 subs r3, #1 - 8005174: b29b uxth r3, r3 - 8005176: 4a50 ldr r2, [pc, #320] ; (80052b8 ) - 8005178: 0019 movs r1, r3 - 800517a: 0010 movs r0, r2 - 800517c: f7fe fdde bl 8003d3c - ST7793_SendCommand(0x212,x); - 8005180: 1cbb adds r3, r7, #2 - 8005182: 881b ldrh r3, [r3, #0] - 8005184: 4a4d ldr r2, [pc, #308] ; (80052bc ) - 8005186: 0019 movs r1, r3 - 8005188: 0010 movs r0, r2 - 800518a: f7fe fdd7 bl 8003d3c - ST7793_SendCommand(0x213,x+w-1); - 800518e: 1cba adds r2, r7, #2 - 8005190: 193b adds r3, r7, r4 - 8005192: 8812 ldrh r2, [r2, #0] - 8005194: 881b ldrh r3, [r3, #0] - 8005196: 18d3 adds r3, r2, r3 - 8005198: b29b uxth r3, r3 - 800519a: 3b01 subs r3, #1 - 800519c: b29b uxth r3, r3 - 800519e: 4a48 ldr r2, [pc, #288] ; (80052c0 ) - 80051a0: 0019 movs r1, r3 - 80051a2: 0010 movs r0, r2 - 80051a4: f7fe fdca bl 8003d3c - ST7793_SendCommand(0x200,y); - 80051a8: 003b movs r3, r7 - 80051aa: 881a ldrh r2, [r3, #0] - 80051ac: 2380 movs r3, #128 ; 0x80 - 80051ae: 009b lsls r3, r3, #2 - 80051b0: 0011 movs r1, r2 - 80051b2: 0018 movs r0, r3 - 80051b4: f7fe fdc2 bl 8003d3c - ST7793_SendCommand(0x201,x); - 80051b8: 1cbb adds r3, r7, #2 - 80051ba: 881b ldrh r3, [r3, #0] - 80051bc: 4a41 ldr r2, [pc, #260] ; (80052c4 ) - 80051be: 0019 movs r1, r3 - 80051c0: 0010 movs r0, r2 - 80051c2: f7fe fdbb bl 8003d3c - - ST7793_COMMAND; //RS pin to command mode - 80051c6: 4b40 ldr r3, [pc, #256] ; (80052c8 ) - 80051c8: 2200 movs r2, #0 - 80051ca: 2101 movs r1, #1 - 80051cc: 0018 movs r0, r3 - 80051ce: f002 fb2d bl 800782c - ST7793_Write8(0x02); //send a command 0x0202 8 MSB first - 80051d2: 2002 movs r0, #2 - 80051d4: f7fe fd2a bl 8003c2c - ST7793_WR_PULSE; //Pulse on the WR pin to send the same 8bits as LSB of the command - 80051d8: 4b3b ldr r3, [pc, #236] ; (80052c8 ) - 80051da: 2200 movs r2, #0 - 80051dc: 2102 movs r1, #2 - 80051de: 0018 movs r0, r3 - 80051e0: f002 fb24 bl 800782c - 80051e4: 4b38 ldr r3, [pc, #224] ; (80052c8 ) - 80051e6: 2201 movs r2, #1 - 80051e8: 2102 movs r1, #2 - 80051ea: 0018 movs r0, r3 - 80051ec: f002 fb1e bl 800782c - - bc = 4; - 80051f0: 2312 movs r3, #18 - 80051f2: 18fb adds r3, r7, r3 - 80051f4: 2204 movs r2, #4 - 80051f6: 801a strh r2, [r3, #0] - for (i = 0; i < h; i++) { - 80051f8: 2316 movs r3, #22 - 80051fa: 18fb adds r3, r7, r3 - 80051fc: 2200 movs r2, #0 - 80051fe: 801a strh r2, [r3, #0] - 8005200: e04c b.n 800529c - for (j = 0; j < w; j++) { - 8005202: 2314 movs r3, #20 - 8005204: 18fb adds r3, r7, r3 - 8005206: 2200 movs r2, #0 - 8005208: 801a strh r2, [r3, #0] - 800520a: e033 b.n 8005274 - if (!(j % 8) && j > 0) bc++; - 800520c: 2114 movs r1, #20 - 800520e: 187b adds r3, r7, r1 - 8005210: 881b ldrh r3, [r3, #0] - 8005212: 2207 movs r2, #7 - 8005214: 4013 ands r3, r2 - 8005216: b29b uxth r3, r3 - 8005218: 2b00 cmp r3, #0 - 800521a: d109 bne.n 8005230 - 800521c: 187b adds r3, r7, r1 - 800521e: 881b ldrh r3, [r3, #0] - 8005220: 2b00 cmp r3, #0 - 8005222: d005 beq.n 8005230 - 8005224: 2112 movs r1, #18 - 8005226: 187b adds r3, r7, r1 - 8005228: 881a ldrh r2, [r3, #0] - 800522a: 187b adds r3, r7, r1 - 800522c: 3201 adds r2, #1 - 800522e: 801a strh r2, [r3, #0] - if ((data[bc] << (j % 8)) & 0x80) ST7793_SendData(color); - 8005230: 2312 movs r3, #18 - 8005232: 18fb adds r3, r7, r3 - 8005234: 881b ldrh r3, [r3, #0] - 8005236: 6aba ldr r2, [r7, #40] ; 0x28 - 8005238: 18d3 adds r3, r2, r3 - 800523a: 781b ldrb r3, [r3, #0] - 800523c: 0019 movs r1, r3 - 800523e: 2314 movs r3, #20 - 8005240: 18fb adds r3, r7, r3 - 8005242: 881b ldrh r3, [r3, #0] - 8005244: 2207 movs r2, #7 - 8005246: 4013 ands r3, r2 - 8005248: 4099 lsls r1, r3 - 800524a: 000b movs r3, r1 - 800524c: 2280 movs r2, #128 ; 0x80 - 800524e: 4013 ands r3, r2 - 8005250: d005 beq.n 800525e - 8005252: 1dbb adds r3, r7, #6 - 8005254: 881b ldrh r3, [r3, #0] - 8005256: 0018 movs r0, r3 - 8005258: f7fe fd52 bl 8003d00 - 800525c: e004 b.n 8005268 - else ST7793_SendData(bgcolor); - 800525e: 1d3b adds r3, r7, #4 - 8005260: 881b ldrh r3, [r3, #0] - 8005262: 0018 movs r0, r3 - 8005264: f7fe fd4c bl 8003d00 - for (j = 0; j < w; j++) { - 8005268: 2114 movs r1, #20 - 800526a: 187b adds r3, r7, r1 - 800526c: 881a ldrh r2, [r3, #0] - 800526e: 187b adds r3, r7, r1 - 8005270: 3201 adds r2, #1 - 8005272: 801a strh r2, [r3, #0] - 8005274: 2314 movs r3, #20 - 8005276: 18fa adds r2, r7, r3 - 8005278: 2310 movs r3, #16 - 800527a: 18fb adds r3, r7, r3 - 800527c: 8812 ldrh r2, [r2, #0] - 800527e: 881b ldrh r3, [r3, #0] - 8005280: 429a cmp r2, r3 - 8005282: d3c3 bcc.n 800520c - } - bc++; - 8005284: 2112 movs r1, #18 - 8005286: 187b adds r3, r7, r1 - 8005288: 881a ldrh r2, [r3, #0] - 800528a: 187b adds r3, r7, r1 - 800528c: 3201 adds r2, #1 - 800528e: 801a strh r2, [r3, #0] - for (i = 0; i < h; i++) { - 8005290: 2116 movs r1, #22 - 8005292: 187b adds r3, r7, r1 - 8005294: 881a ldrh r2, [r3, #0] - 8005296: 187b adds r3, r7, r1 - 8005298: 3201 adds r2, #1 - 800529a: 801a strh r2, [r3, #0] - 800529c: 2316 movs r3, #22 - 800529e: 18fa adds r2, r7, r3 - 80052a0: 230e movs r3, #14 - 80052a2: 18fb adds r3, r7, r3 - 80052a4: 8812 ldrh r2, [r2, #0] - 80052a6: 881b ldrh r3, [r3, #0] - 80052a8: 429a cmp r2, r3 - 80052aa: d3aa bcc.n 8005202 - } -} - 80052ac: 46c0 nop ; (mov r8, r8) - 80052ae: 46c0 nop ; (mov r8, r8) - 80052b0: 46bd mov sp, r7 - 80052b2: b006 add sp, #24 - 80052b4: bdb0 pop {r4, r5, r7, pc} - 80052b6: 46c0 nop ; (mov r8, r8) - 80052b8: 00000211 .word 0x00000211 - 80052bc: 00000212 .word 0x00000212 - 80052c0: 00000213 .word 0x00000213 - 80052c4: 00000201 .word 0x00000201 - 80052c8: 50000400 .word 0x50000400 - -080052cc : - -#ifdef HAS_TOUCHSCREEN -//read ADC channel -uint16_t ST7793_ReadADC(uint8_t chan) { - 80052cc: b590 push {r4, r7, lr} - 80052ce: b087 sub sp, #28 - 80052d0: af00 add r7, sp, #0 - 80052d2: 0002 movs r2, r0 - 80052d4: 1dfb adds r3, r7, #7 - 80052d6: 701a strb r2, [r3, #0] - ADC_ChannelConfTypeDef sConfig = {0}; - 80052d8: 2308 movs r3, #8 - 80052da: 18fb adds r3, r7, r3 - 80052dc: 0018 movs r0, r3 - 80052de: 230c movs r3, #12 - 80052e0: 001a movs r2, r3 - 80052e2: 2100 movs r1, #0 - 80052e4: f009 fc93 bl 800ec0e - uint16_t res; - - sConfig.Channel = chan == 0 ? ST7793_XM_CHAN : ST7793_YP_CHAN; - 80052e8: 1dfb adds r3, r7, #7 - 80052ea: 781b ldrb r3, [r3, #0] - 80052ec: 2b00 cmp r3, #0 - 80052ee: d101 bne.n 80052f4 - 80052f0: 4a18 ldr r2, [pc, #96] ; (8005354 ) - 80052f2: e000 b.n 80052f6 - 80052f4: 4a18 ldr r2, [pc, #96] ; (8005358 ) - 80052f6: 2108 movs r1, #8 - 80052f8: 187b adds r3, r7, r1 - 80052fa: 601a str r2, [r3, #0] - sConfig.Rank = ADC_REGULAR_RANK_1; - 80052fc: 187b adds r3, r7, r1 - 80052fe: 2200 movs r2, #0 - 8005300: 605a str r2, [r3, #4] - sConfig.SamplingTime = ADC_SAMPLINGTIME_COMMON_1; - 8005302: 187b adds r3, r7, r1 - 8005304: 2200 movs r2, #0 - 8005306: 609a str r2, [r3, #8] - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { - 8005308: 187a adds r2, r7, r1 - 800530a: 4b14 ldr r3, [pc, #80] ; (800535c ) - 800530c: 0011 movs r1, r2 - 800530e: 0018 movs r0, r3 - 8005310: f001 fc26 bl 8006b60 - 8005314: 1e03 subs r3, r0, #0 - 8005316: d001 beq.n 800531c - Error_Handler(); - 8005318: f7fe fa32 bl 8003780 - } - HAL_ADC_Start(&hadc1); - 800531c: 4b0f ldr r3, [pc, #60] ; (800535c ) - 800531e: 0018 movs r0, r3 - 8005320: f001 faf4 bl 800690c - HAL_ADC_PollForConversion(&hadc1, 50); - 8005324: 4b0d ldr r3, [pc, #52] ; (800535c ) - 8005326: 2132 movs r1, #50 ; 0x32 - 8005328: 0018 movs r0, r3 - 800532a: f001 fb79 bl 8006a20 - res = HAL_ADC_GetValue(&hadc1); - 800532e: 4b0b ldr r3, [pc, #44] ; (800535c ) - 8005330: 0018 movs r0, r3 - 8005332: f001 fc09 bl 8006b48 - 8005336: 0002 movs r2, r0 - 8005338: 2416 movs r4, #22 - 800533a: 193b adds r3, r7, r4 - 800533c: 801a strh r2, [r3, #0] - HAL_ADC_Stop(&hadc1); - 800533e: 4b07 ldr r3, [pc, #28] ; (800535c ) - 8005340: 0018 movs r0, r3 - 8005342: f001 fb31 bl 80069a8 - return res; - 8005346: 193b adds r3, r7, r4 - 8005348: 881b ldrh r3, [r3, #0] -} - 800534a: 0018 movs r0, r3 - 800534c: 46bd mov sp, r7 - 800534e: b007 add sp, #28 - 8005350: bd90 pop {r4, r7, pc} - 8005352: 46c0 nop ; (mov r8, r8) - 8005354: 20000100 .word 0x20000100 - 8005358: 24000200 .word 0x24000200 - 800535c: 200000d0 .word 0x200000d0 - -08005360 : - -//Configure pins to read X, Y, Z or set them to control the display -// 0 - display; 1 - Z, 2 - X, 3 - Y -void ST7793_TouchPins(uint8_t mode) { - 8005360: b5f0 push {r4, r5, r6, r7, lr} - 8005362: b097 sub sp, #92 ; 0x5c - 8005364: af00 add r7, sp, #0 - 8005366: 0002 movs r2, r0 - 8005368: 1dfb adds r3, r7, #7 - 800536a: 701a strb r2, [r3, #0] - GPIO_InitTypeDef GPIO_InitStructXM = {0}; - 800536c: 2444 movs r4, #68 ; 0x44 - 800536e: 193b adds r3, r7, r4 - 8005370: 0018 movs r0, r3 - 8005372: 2314 movs r3, #20 - 8005374: 001a movs r2, r3 - 8005376: 2100 movs r1, #0 - 8005378: f009 fc49 bl 800ec0e - GPIO_InitTypeDef GPIO_InitStructXP = {0}; - 800537c: 2530 movs r5, #48 ; 0x30 - 800537e: 197b adds r3, r7, r5 - 8005380: 0018 movs r0, r3 - 8005382: 2314 movs r3, #20 - 8005384: 001a movs r2, r3 - 8005386: 2100 movs r1, #0 - 8005388: f009 fc41 bl 800ec0e - GPIO_InitTypeDef GPIO_InitStructYM = {0}; - 800538c: 261c movs r6, #28 - 800538e: 19bb adds r3, r7, r6 - 8005390: 0018 movs r0, r3 - 8005392: 2314 movs r3, #20 - 8005394: 001a movs r2, r3 - 8005396: 2100 movs r1, #0 - 8005398: f009 fc39 bl 800ec0e - GPIO_InitTypeDef GPIO_InitStructYP = {0}; - 800539c: 2108 movs r1, #8 - 800539e: 187b adds r3, r7, r1 - 80053a0: 0018 movs r0, r3 - 80053a2: 2314 movs r3, #20 - 80053a4: 001a movs r2, r3 - 80053a6: 2100 movs r1, #0 - 80053a8: f009 fc31 bl 800ec0e - - GPIO_InitStructXM.Pin = ST7793_RS_pn; - 80053ac: 193b adds r3, r7, r4 - 80053ae: 2201 movs r2, #1 - 80053b0: 601a str r2, [r3, #0] - GPIO_InitStructXP.Pin = GPIO_PIN_6< - 80053fe: dc4b bgt.n 8005498 - 8005400: 2b02 cmp r3, #2 - 8005402: d027 beq.n 8005454 - 8005404: dc48 bgt.n 8005498 - 8005406: 2b00 cmp r3, #0 - 8005408: d002 beq.n 8005410 - 800540a: 2b01 cmp r3, #1 - 800540c: d011 beq.n 8005432 - 800540e: e043 b.n 8005498 - case 0: //Display mode - GPIO_InitStructXM.Mode = GPIO_MODE_OUTPUT_PP; - 8005410: 2344 movs r3, #68 ; 0x44 - 8005412: 18fb adds r3, r7, r3 - 8005414: 2201 movs r2, #1 - 8005416: 605a str r2, [r3, #4] - GPIO_InitStructXP.Mode = GPIO_MODE_OUTPUT_PP; - 8005418: 2330 movs r3, #48 ; 0x30 - 800541a: 18fb adds r3, r7, r3 - 800541c: 2201 movs r2, #1 - 800541e: 605a str r2, [r3, #4] - GPIO_InitStructYM.Mode = GPIO_MODE_OUTPUT_PP; - 8005420: 231c movs r3, #28 - 8005422: 18fb adds r3, r7, r3 - 8005424: 2201 movs r2, #1 - 8005426: 605a str r2, [r3, #4] - GPIO_InitStructYP.Mode = GPIO_MODE_OUTPUT_PP; - 8005428: 2308 movs r3, #8 - 800542a: 18fb adds r3, r7, r3 - 800542c: 2201 movs r2, #1 - 800542e: 605a str r2, [r3, #4] - break; - 8005430: e032 b.n 8005498 - case 1: //Z mode - GPIO_InitStructXM.Mode = GPIO_MODE_ANALOG; - 8005432: 2344 movs r3, #68 ; 0x44 - 8005434: 18fb adds r3, r7, r3 - 8005436: 2203 movs r2, #3 - 8005438: 605a str r2, [r3, #4] - GPIO_InitStructXP.Mode = GPIO_MODE_OUTPUT_PP; - 800543a: 2330 movs r3, #48 ; 0x30 - 800543c: 18fb adds r3, r7, r3 - 800543e: 2201 movs r2, #1 - 8005440: 605a str r2, [r3, #4] - GPIO_InitStructYM.Mode = GPIO_MODE_OUTPUT_PP; - 8005442: 231c movs r3, #28 - 8005444: 18fb adds r3, r7, r3 - 8005446: 2201 movs r2, #1 - 8005448: 605a str r2, [r3, #4] - GPIO_InitStructYP.Mode = GPIO_MODE_ANALOG; - 800544a: 2308 movs r3, #8 - 800544c: 18fb adds r3, r7, r3 - 800544e: 2203 movs r2, #3 - 8005450: 605a str r2, [r3, #4] - break; - 8005452: e021 b.n 8005498 - case 2: //X mode - GPIO_InitStructXM.Mode = GPIO_MODE_OUTPUT_PP; - 8005454: 2344 movs r3, #68 ; 0x44 - 8005456: 18fb adds r3, r7, r3 - 8005458: 2201 movs r2, #1 - 800545a: 605a str r2, [r3, #4] - GPIO_InitStructXP.Mode = GPIO_MODE_OUTPUT_PP; - 800545c: 2330 movs r3, #48 ; 0x30 - 800545e: 18fb adds r3, r7, r3 - 8005460: 2201 movs r2, #1 - 8005462: 605a str r2, [r3, #4] - GPIO_InitStructYM.Mode = GPIO_MODE_INPUT; - 8005464: 231c movs r3, #28 - 8005466: 18fb adds r3, r7, r3 - 8005468: 2200 movs r2, #0 - 800546a: 605a str r2, [r3, #4] - GPIO_InitStructYP.Mode = GPIO_MODE_ANALOG; - 800546c: 2308 movs r3, #8 - 800546e: 18fb adds r3, r7, r3 - 8005470: 2203 movs r2, #3 - 8005472: 605a str r2, [r3, #4] - break; - 8005474: e010 b.n 8005498 - case 3: //Y mode - GPIO_InitStructXM.Mode = GPIO_MODE_ANALOG; - 8005476: 2344 movs r3, #68 ; 0x44 - 8005478: 18fb adds r3, r7, r3 - 800547a: 2203 movs r2, #3 - 800547c: 605a str r2, [r3, #4] - GPIO_InitStructXP.Mode = GPIO_MODE_INPUT; - 800547e: 2330 movs r3, #48 ; 0x30 - 8005480: 18fb adds r3, r7, r3 - 8005482: 2200 movs r2, #0 - 8005484: 605a str r2, [r3, #4] - GPIO_InitStructYM.Mode = GPIO_MODE_OUTPUT_PP; - 8005486: 231c movs r3, #28 - 8005488: 18fb adds r3, r7, r3 - 800548a: 2201 movs r2, #1 - 800548c: 605a str r2, [r3, #4] - GPIO_InitStructYP.Mode = GPIO_MODE_OUTPUT_PP; - 800548e: 2308 movs r3, #8 - 8005490: 18fb adds r3, r7, r3 - 8005492: 2201 movs r2, #1 - 8005494: 605a str r2, [r3, #4] - break; - 8005496: 46c0 nop ; (mov r8, r8) - } - HAL_GPIO_Init(ST7793_RS_pt, &GPIO_InitStructXM); - 8005498: 2344 movs r3, #68 ; 0x44 - 800549a: 18fb adds r3, r7, r3 - 800549c: 4a2a ldr r2, [pc, #168] ; (8005548 ) - 800549e: 0019 movs r1, r3 - 80054a0: 0010 movs r0, r2 - 80054a2: f002 f85f bl 8007564 - HAL_GPIO_Init(ST7793_DPort, &GPIO_InitStructXP); - 80054a6: 2330 movs r3, #48 ; 0x30 - 80054a8: 18fa adds r2, r7, r3 - 80054aa: 23a0 movs r3, #160 ; 0xa0 - 80054ac: 05db lsls r3, r3, #23 - 80054ae: 0011 movs r1, r2 - 80054b0: 0018 movs r0, r3 - 80054b2: f002 f857 bl 8007564 - HAL_GPIO_Init(ST7793_DPort, &GPIO_InitStructYM); - 80054b6: 231c movs r3, #28 - 80054b8: 18fa adds r2, r7, r3 - 80054ba: 23a0 movs r3, #160 ; 0xa0 - 80054bc: 05db lsls r3, r3, #23 - 80054be: 0011 movs r1, r2 - 80054c0: 0018 movs r0, r3 - 80054c2: f002 f84f bl 8007564 - HAL_GPIO_Init(ST7793_WR_pt, &GPIO_InitStructYP); - 80054c6: 2308 movs r3, #8 - 80054c8: 18fb adds r3, r7, r3 - 80054ca: 4a1f ldr r2, [pc, #124] ; (8005548 ) - 80054cc: 0019 movs r1, r3 - 80054ce: 0010 movs r0, r2 - 80054d0: f002 f848 bl 8007564 - - switch (mode) { - 80054d4: 1dfb adds r3, r7, #7 - 80054d6: 781b ldrb r3, [r3, #0] - 80054d8: 2b03 cmp r3, #3 - 80054da: d022 beq.n 8005522 - 80054dc: dc2f bgt.n 800553e - 80054de: 2b01 cmp r3, #1 - 80054e0: d002 beq.n 80054e8 - 80054e2: 2b02 cmp r3, #2 - 80054e4: d00f beq.n 8005506 - HAL_GPIO_WritePin(ST7793_WR_pt, ST7793_WR_pn, GPIO_PIN_SET); // Set Y+ to VCC - break; - } - - -} - 80054e6: e02a b.n 800553e - HAL_GPIO_WritePin(ST7793_DPort, GPIO_PIN_6< - HAL_GPIO_WritePin(ST7793_DPort, GPIO_PIN_7< - break; - 8005504: e01b b.n 800553e - HAL_GPIO_WritePin(ST7793_RS_pt, ST7793_RS_pn, GPIO_PIN_RESET); // Set X- to ground - 8005506: 4b10 ldr r3, [pc, #64] ; (8005548 ) - 8005508: 2200 movs r2, #0 - 800550a: 2101 movs r1, #1 - 800550c: 0018 movs r0, r3 - 800550e: f002 f98d bl 800782c - HAL_GPIO_WritePin(ST7793_DPort, GPIO_PIN_6< - break; - 8005520: e00d b.n 800553e - HAL_GPIO_WritePin(ST7793_DPort, GPIO_PIN_7< - HAL_GPIO_WritePin(ST7793_WR_pt, ST7793_WR_pn, GPIO_PIN_SET); // Set Y+ to VCC - 8005530: 4b05 ldr r3, [pc, #20] ; (8005548 ) - 8005532: 2201 movs r2, #1 - 8005534: 2102 movs r1, #2 - 8005536: 0018 movs r0, r3 - 8005538: f002 f978 bl 800782c - break; - 800553c: 46c0 nop ; (mov r8, r8) -} - 800553e: 46c0 nop ; (mov r8, r8) - 8005540: 46bd mov sp, r7 - 8005542: b017 add sp, #92 ; 0x5c - 8005544: bdf0 pop {r4, r5, r6, r7, pc} - 8005546: 46c0 nop ; (mov r8, r8) - 8005548: 50000400 .word 0x50000400 - -0800554c : - -//Map ADC values to screen resolution -uint16_t ST7793_Map(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max) { - 800554c: b5b0 push {r4, r5, r7, lr} - 800554e: b082 sub sp, #8 - 8005550: af00 add r7, sp, #0 - 8005552: 0005 movs r5, r0 - 8005554: 000c movs r4, r1 - 8005556: 0010 movs r0, r2 - 8005558: 0019 movs r1, r3 - 800555a: 1dbb adds r3, r7, #6 - 800555c: 1c2a adds r2, r5, #0 - 800555e: 801a strh r2, [r3, #0] - 8005560: 1d3b adds r3, r7, #4 - 8005562: 1c22 adds r2, r4, #0 - 8005564: 801a strh r2, [r3, #0] - 8005566: 1cbb adds r3, r7, #2 - 8005568: 1c02 adds r2, r0, #0 - 800556a: 801a strh r2, [r3, #0] - 800556c: 003b movs r3, r7 - 800556e: 1c0a adds r2, r1, #0 - 8005570: 801a strh r2, [r3, #0] - return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; - 8005572: 1dbb adds r3, r7, #6 - 8005574: 881a ldrh r2, [r3, #0] - 8005576: 1d3b adds r3, r7, #4 - 8005578: 881b ldrh r3, [r3, #0] - 800557a: 1ad2 subs r2, r2, r3 - 800557c: 2318 movs r3, #24 - 800557e: 18fb adds r3, r7, r3 - 8005580: 8819 ldrh r1, [r3, #0] - 8005582: 003b movs r3, r7 - 8005584: 881b ldrh r3, [r3, #0] - 8005586: 1acb subs r3, r1, r3 - 8005588: 4353 muls r3, r2 - 800558a: 0018 movs r0, r3 - 800558c: 1cbb adds r3, r7, #2 - 800558e: 881a ldrh r2, [r3, #0] - 8005590: 1d3b adds r3, r7, #4 - 8005592: 881b ldrh r3, [r3, #0] - 8005594: 1ad3 subs r3, r2, r3 - 8005596: 0019 movs r1, r3 - 8005598: f7fa fe52 bl 8000240 <__divsi3> - 800559c: 0003 movs r3, r0 - 800559e: b29a uxth r2, r3 - 80055a0: 003b movs r3, r7 - 80055a2: 881b ldrh r3, [r3, #0] - 80055a4: 18d3 adds r3, r2, r3 - 80055a6: b29b uxth r3, r3 -} - 80055a8: 0018 movs r0, r3 - 80055aa: 46bd mov sp, r7 - 80055ac: b002 add sp, #8 - 80055ae: bdb0 pop {r4, r5, r7, pc} - -080055b0 : - - -//Check touch screen. Returns x and y of the touch and z as the pressure value. If z == 0 then we have no touch. -TouchPoint ST7793_CheckTouch(void) { - 80055b0: b5f0 push {r4, r5, r6, r7, lr} - 80055b2: b089 sub sp, #36 ; 0x24 - 80055b4: af02 add r7, sp, #8 - 80055b6: 6078 str r0, [r7, #4] - TouchPoint t = {0}; - 80055b8: 250c movs r5, #12 - 80055ba: 197b adds r3, r7, r5 - 80055bc: 0018 movs r0, r3 - 80055be: 2306 movs r3, #6 - 80055c0: 001a movs r2, r3 - 80055c2: 2100 movs r1, #0 - 80055c4: f009 fb23 bl 800ec0e - uint16_t a1, a2; - - ST7793_TouchPins(1); - 80055c8: 2001 movs r0, #1 - 80055ca: f7ff fec9 bl 8005360 - // read ADC X- and Y+ - a1 = ST7793_ReadADC(0); - 80055ce: 2616 movs r6, #22 - 80055d0: 19bc adds r4, r7, r6 - 80055d2: 2000 movs r0, #0 - 80055d4: f7ff fe7a bl 80052cc - 80055d8: 0003 movs r3, r0 - 80055da: 8023 strh r3, [r4, #0] - a2 = ST7793_ReadADC(1); - 80055dc: 2014 movs r0, #20 - 80055de: 183c adds r4, r7, r0 - 80055e0: 2001 movs r0, #1 - 80055e2: f7ff fe73 bl 80052cc - 80055e6: 0003 movs r3, r0 - 80055e8: 8023 strh r3, [r4, #0] - t.z = 1023-a2+a1; - 80055ea: 19ba adds r2, r7, r6 - 80055ec: 2014 movs r0, #20 - 80055ee: 183b adds r3, r7, r0 - 80055f0: 8812 ldrh r2, [r2, #0] - 80055f2: 881b ldrh r3, [r3, #0] - 80055f4: 1ad3 subs r3, r2, r3 - 80055f6: b29b uxth r3, r3 - 80055f8: 4a25 ldr r2, [pc, #148] ; (8005690 ) - 80055fa: 4694 mov ip, r2 - 80055fc: 4463 add r3, ip - 80055fe: b29a uxth r2, r3 - 8005600: 197b adds r3, r7, r5 - 8005602: 809a strh r2, [r3, #4] - - if (t.z > ST7793_Z_THRESHOLD) { - 8005604: 197b adds r3, r7, r5 - 8005606: 889b ldrh r3, [r3, #4] - 8005608: 2b0f cmp r3, #15 - 800560a: d930 bls.n 800566e - //Reading X - ST7793_TouchPins(2); - 800560c: 2002 movs r0, #2 - 800560e: f7ff fea7 bl 8005360 - a1 = ST7793_ReadADC(1); - 8005612: 19bc adds r4, r7, r6 - 8005614: 2001 movs r0, #1 - 8005616: f7ff fe59 bl 80052cc - 800561a: 0003 movs r3, r0 - 800561c: 8023 strh r3, [r4, #0] - //Reading Y - ST7793_TouchPins(3); - 800561e: 2003 movs r0, #3 - 8005620: f7ff fe9e bl 8005360 - a2 = 1023 - ST7793_ReadADC(0); - 8005624: 2000 movs r0, #0 - 8005626: f7ff fe51 bl 80052cc - 800562a: 0003 movs r3, r0 - 800562c: 0019 movs r1, r3 - 800562e: 2014 movs r0, #20 - 8005630: 183b adds r3, r7, r0 - 8005632: 4a17 ldr r2, [pc, #92] ; (8005690 ) - 8005634: 1a52 subs r2, r2, r1 - 8005636: 801a strh r2, [r3, #0] -// t.x = a2; -// t.y = a1; - t.x = ST7793_Map(a2, ST7793_TS_XMIN, ST7793_TS_XMAX, 1, ST7793_XMAX); - 8005638: 4a16 ldr r2, [pc, #88] ; (8005694 ) - 800563a: 183b adds r3, r7, r0 - 800563c: 8818 ldrh r0, [r3, #0] - 800563e: 23c8 movs r3, #200 ; 0xc8 - 8005640: 005b lsls r3, r3, #1 - 8005642: 9300 str r3, [sp, #0] - 8005644: 2301 movs r3, #1 - 8005646: 2164 movs r1, #100 ; 0x64 - 8005648: f7ff ff80 bl 800554c - 800564c: 0003 movs r3, r0 - 800564e: 001a movs r2, r3 - 8005650: 197b adds r3, r7, r5 - 8005652: 801a strh r2, [r3, #0] - t.y = ST7793_Map(a1, ST7793_TS_YMIN, ST7793_TS_YMAX, 1, ST7793_YMAX); - 8005654: 4a10 ldr r2, [pc, #64] ; (8005698 ) - 8005656: 19bb adds r3, r7, r6 - 8005658: 8818 ldrh r0, [r3, #0] - 800565a: 23f0 movs r3, #240 ; 0xf0 - 800565c: 9300 str r3, [sp, #0] - 800565e: 2301 movs r3, #1 - 8005660: 216e movs r1, #110 ; 0x6e - 8005662: f7ff ff73 bl 800554c - 8005666: 0003 movs r3, r0 - 8005668: 001a movs r2, r3 - 800566a: 197b adds r3, r7, r5 - 800566c: 805a strh r2, [r3, #2] - } - - ST7793_TouchPins(0); - 800566e: 2000 movs r0, #0 - 8005670: f7ff fe76 bl 8005360 - return t; - 8005674: 687a ldr r2, [r7, #4] - 8005676: 230c movs r3, #12 - 8005678: 18fb adds r3, r7, r3 - 800567a: 0010 movs r0, r2 - 800567c: 0019 movs r1, r3 - 800567e: 2306 movs r3, #6 - 8005680: 001a movs r2, r3 - 8005682: f009 fabb bl 800ebfc -} - 8005686: 6878 ldr r0, [r7, #4] - 8005688: 46bd mov sp, r7 - 800568a: b007 add sp, #28 - 800568c: bdf0 pop {r4, r5, r6, r7, pc} - 800568e: 46c0 nop ; (mov r8, r8) - 8005690: 000003ff .word 0x000003ff - 8005694: 000003b6 .word 0x000003b6 - 8005698: 00000393 .word 0x00000393 - -0800569c : - -//Check if the touch is in rect boundaries - uint8_t ST7793_TouchInRect(TouchPoint *t, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { - 800569c: b590 push {r4, r7, lr} - 800569e: b085 sub sp, #20 - 80056a0: af00 add r7, sp, #0 - 80056a2: 60f8 str r0, [r7, #12] - 80056a4: 000c movs r4, r1 - 80056a6: 0010 movs r0, r2 - 80056a8: 0019 movs r1, r3 - 80056aa: 230a movs r3, #10 - 80056ac: 18fb adds r3, r7, r3 - 80056ae: 1c22 adds r2, r4, #0 - 80056b0: 801a strh r2, [r3, #0] - 80056b2: 2308 movs r3, #8 - 80056b4: 18fb adds r3, r7, r3 - 80056b6: 1c02 adds r2, r0, #0 - 80056b8: 801a strh r2, [r3, #0] - 80056ba: 1dbb adds r3, r7, #6 - 80056bc: 1c0a adds r2, r1, #0 - 80056be: 801a strh r2, [r3, #0] - if (t->z < ST7793_Z_THRESHOLD) return 0; - 80056c0: 68fb ldr r3, [r7, #12] - 80056c2: 889b ldrh r3, [r3, #4] - 80056c4: 2b0e cmp r3, #14 - 80056c6: d801 bhi.n 80056cc - 80056c8: 2300 movs r3, #0 - 80056ca: e01d b.n 8005708 - if (t->x >= x1 && t->x <= x2 && t->y >= y1 && t->y <= y2) { - 80056cc: 68fb ldr r3, [r7, #12] - 80056ce: 881b ldrh r3, [r3, #0] - 80056d0: 220a movs r2, #10 - 80056d2: 18ba adds r2, r7, r2 - 80056d4: 8812 ldrh r2, [r2, #0] - 80056d6: 429a cmp r2, r3 - 80056d8: d815 bhi.n 8005706 - 80056da: 68fb ldr r3, [r7, #12] - 80056dc: 881b ldrh r3, [r3, #0] - 80056de: 1dba adds r2, r7, #6 - 80056e0: 8812 ldrh r2, [r2, #0] - 80056e2: 429a cmp r2, r3 - 80056e4: d30f bcc.n 8005706 - 80056e6: 68fb ldr r3, [r7, #12] - 80056e8: 885b ldrh r3, [r3, #2] - 80056ea: 2208 movs r2, #8 - 80056ec: 18ba adds r2, r7, r2 - 80056ee: 8812 ldrh r2, [r2, #0] - 80056f0: 429a cmp r2, r3 - 80056f2: d808 bhi.n 8005706 - 80056f4: 68fb ldr r3, [r7, #12] - 80056f6: 885a ldrh r2, [r3, #2] - 80056f8: 2320 movs r3, #32 - 80056fa: 18fb adds r3, r7, r3 - 80056fc: 881b ldrh r3, [r3, #0] - 80056fe: 4293 cmp r3, r2 - 8005700: d301 bcc.n 8005706 - return 1; - 8005702: 2301 movs r3, #1 - 8005704: e000 b.n 8005708 - } else { - return 0; - 8005706: 2300 movs r3, #0 - } - } - 8005708: 0018 movs r0, r3 - 800570a: 46bd mov sp, r7 - 800570c: b005 add sp, #20 - 800570e: bd90 pop {r4, r7, pc} - -08005710 : -/* USER CODE END 0 */ -/** - * Initializes the Global MSP. - */ -void HAL_MspInit(void) -{ - 8005710: b580 push {r7, lr} - 8005712: b082 sub sp, #8 - 8005714: af00 add r7, sp, #0 - /* USER CODE BEGIN MspInit 0 */ - - /* USER CODE END MspInit 0 */ - - __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8005716: 4b15 ldr r3, [pc, #84] ; (800576c ) - 8005718: 6c1a ldr r2, [r3, #64] ; 0x40 - 800571a: 4b14 ldr r3, [pc, #80] ; (800576c ) - 800571c: 2101 movs r1, #1 - 800571e: 430a orrs r2, r1 - 8005720: 641a str r2, [r3, #64] ; 0x40 - 8005722: 4b12 ldr r3, [pc, #72] ; (800576c ) - 8005724: 6c1b ldr r3, [r3, #64] ; 0x40 - 8005726: 2201 movs r2, #1 - 8005728: 4013 ands r3, r2 - 800572a: 607b str r3, [r7, #4] - 800572c: 687b ldr r3, [r7, #4] - __HAL_RCC_PWR_CLK_ENABLE(); - 800572e: 4b0f ldr r3, [pc, #60] ; (800576c ) - 8005730: 6bda ldr r2, [r3, #60] ; 0x3c - 8005732: 4b0e ldr r3, [pc, #56] ; (800576c ) - 8005734: 2180 movs r1, #128 ; 0x80 - 8005736: 0549 lsls r1, r1, #21 - 8005738: 430a orrs r2, r1 - 800573a: 63da str r2, [r3, #60] ; 0x3c - 800573c: 4b0b ldr r3, [pc, #44] ; (800576c ) - 800573e: 6bda ldr r2, [r3, #60] ; 0x3c - 8005740: 2380 movs r3, #128 ; 0x80 - 8005742: 055b lsls r3, r3, #21 - 8005744: 4013 ands r3, r2 - 8005746: 603b str r3, [r7, #0] - 8005748: 683b ldr r3, [r7, #0] - - /* System interrupt init*/ - /* PendSV_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(PendSV_IRQn, 3, 0); - 800574a: 2302 movs r3, #2 - 800574c: 425b negs r3, r3 - 800574e: 2200 movs r2, #0 - 8005750: 2103 movs r1, #3 - 8005752: 0018 movs r0, r3 - 8005754: f001 fee0 bl 8007518 - - /** Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral - */ - HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE); - 8005758: 23c0 movs r3, #192 ; 0xc0 - 800575a: 00db lsls r3, r3, #3 - 800575c: 0018 movs r0, r3 - 800575e: f000 fdad bl 80062bc - - /* USER CODE BEGIN MspInit 1 */ - - /* USER CODE END MspInit 1 */ -} - 8005762: 46c0 nop ; (mov r8, r8) - 8005764: 46bd mov sp, r7 - 8005766: b002 add sp, #8 - 8005768: bd80 pop {r7, pc} - 800576a: 46c0 nop ; (mov r8, r8) - 800576c: 40021000 .word 0x40021000 - -08005770 : - * 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) -{ - 8005770: b5b0 push {r4, r5, r7, lr} - 8005772: b08c sub sp, #48 ; 0x30 - 8005774: af00 add r7, sp, #0 - 8005776: 6078 str r0, [r7, #4] - RCC_ClkInitTypeDef clkconfig; - uint32_t uwTimclock, uwAPB1Prescaler; - - uint32_t uwPrescalerValue; - uint32_t pFLatency; - HAL_StatusTypeDef status = HAL_OK; - 8005778: 232b movs r3, #43 ; 0x2b - 800577a: 18fb adds r3, r7, r3 - 800577c: 2200 movs r2, #0 - 800577e: 701a strb r2, [r3, #0] - - /* Enable TIM6 clock */ - __HAL_RCC_TIM6_CLK_ENABLE(); - 8005780: 4b37 ldr r3, [pc, #220] ; (8005860 ) - 8005782: 6bda ldr r2, [r3, #60] ; 0x3c - 8005784: 4b36 ldr r3, [pc, #216] ; (8005860 ) - 8005786: 2110 movs r1, #16 - 8005788: 430a orrs r2, r1 - 800578a: 63da str r2, [r3, #60] ; 0x3c - 800578c: 4b34 ldr r3, [pc, #208] ; (8005860 ) - 800578e: 6bdb ldr r3, [r3, #60] ; 0x3c - 8005790: 2210 movs r2, #16 - 8005792: 4013 ands r3, r2 - 8005794: 60bb str r3, [r7, #8] - 8005796: 68bb ldr r3, [r7, #8] - - /* Get clock configuration */ - HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); - 8005798: 230c movs r3, #12 - 800579a: 18fa adds r2, r7, r3 - 800579c: 2410 movs r4, #16 - 800579e: 193b adds r3, r7, r4 - 80057a0: 0011 movs r1, r2 - 80057a2: 0018 movs r0, r3 - 80057a4: f002 fd64 bl 8008270 - - /* Get APB1 prescaler */ - uwAPB1Prescaler = clkconfig.APB1CLKDivider; - 80057a8: 193b adds r3, r7, r4 - 80057aa: 68db ldr r3, [r3, #12] - 80057ac: 627b str r3, [r7, #36] ; 0x24 - /* Compute TIM6 clock */ - if (uwAPB1Prescaler == RCC_HCLK_DIV1) - 80057ae: 6a7b ldr r3, [r7, #36] ; 0x24 - 80057b0: 2b00 cmp r3, #0 - 80057b2: d104 bne.n 80057be - { - uwTimclock = HAL_RCC_GetPCLK1Freq(); - 80057b4: f002 fd46 bl 8008244 - 80057b8: 0003 movs r3, r0 - 80057ba: 62fb str r3, [r7, #44] ; 0x2c - 80057bc: e004 b.n 80057c8 - } - else - { - uwTimclock = 2UL * HAL_RCC_GetPCLK1Freq(); - 80057be: f002 fd41 bl 8008244 - 80057c2: 0003 movs r3, r0 - 80057c4: 005b lsls r3, r3, #1 - 80057c6: 62fb str r3, [r7, #44] ; 0x2c - } - - /* Compute the prescaler value to have TIM6 counter clock equal to 1MHz */ - uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); - 80057c8: 6afb ldr r3, [r7, #44] ; 0x2c - 80057ca: 4926 ldr r1, [pc, #152] ; (8005864 ) - 80057cc: 0018 movs r0, r3 - 80057ce: f7fa fcad bl 800012c <__udivsi3> - 80057d2: 0003 movs r3, r0 - 80057d4: 3b01 subs r3, #1 - 80057d6: 623b str r3, [r7, #32] - - /* Initialize TIM6 */ - htim6.Instance = TIM6; - 80057d8: 4b23 ldr r3, [pc, #140] ; (8005868 ) - 80057da: 4a24 ldr r2, [pc, #144] ; (800586c ) - 80057dc: 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; - 80057de: 4b22 ldr r3, [pc, #136] ; (8005868 ) - 80057e0: 4a23 ldr r2, [pc, #140] ; (8005870 ) - 80057e2: 60da str r2, [r3, #12] - htim6.Init.Prescaler = uwPrescalerValue; - 80057e4: 4b20 ldr r3, [pc, #128] ; (8005868 ) - 80057e6: 6a3a ldr r2, [r7, #32] - 80057e8: 605a str r2, [r3, #4] - htim6.Init.ClockDivision = 0; - 80057ea: 4b1f ldr r3, [pc, #124] ; (8005868 ) - 80057ec: 2200 movs r2, #0 - 80057ee: 611a str r2, [r3, #16] - htim6.Init.CounterMode = TIM_COUNTERMODE_UP; - 80057f0: 4b1d ldr r3, [pc, #116] ; (8005868 ) - 80057f2: 2200 movs r2, #0 - 80057f4: 609a str r2, [r3, #8] - htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 80057f6: 4b1c ldr r3, [pc, #112] ; (8005868 ) - 80057f8: 2200 movs r2, #0 - 80057fa: 619a str r2, [r3, #24] - - status = HAL_TIM_Base_Init(&htim6); - 80057fc: 252b movs r5, #43 ; 0x2b - 80057fe: 197c adds r4, r7, r5 - 8005800: 4b19 ldr r3, [pc, #100] ; (8005868 ) - 8005802: 0018 movs r0, r3 - 8005804: f003 fc3c bl 8009080 - 8005808: 0003 movs r3, r0 - 800580a: 7023 strb r3, [r4, #0] - if (status == HAL_OK) - 800580c: 197b adds r3, r7, r5 - 800580e: 781b ldrb r3, [r3, #0] - 8005810: 2b00 cmp r3, #0 - 8005812: d11e bne.n 8005852 - { - /* Start the TIM time Base generation in interrupt mode */ - status = HAL_TIM_Base_Start_IT(&htim6); - 8005814: 197c adds r4, r7, r5 - 8005816: 4b14 ldr r3, [pc, #80] ; (8005868 ) - 8005818: 0018 movs r0, r3 - 800581a: f003 fc89 bl 8009130 - 800581e: 0003 movs r3, r0 - 8005820: 7023 strb r3, [r4, #0] - if (status == HAL_OK) - 8005822: 197b adds r3, r7, r5 - 8005824: 781b ldrb r3, [r3, #0] - 8005826: 2b00 cmp r3, #0 - 8005828: d113 bne.n 8005852 - { - /* Enable the TIM6 global Interrupt */ - HAL_NVIC_EnableIRQ(TIM6_IRQn); - 800582a: 2011 movs r0, #17 - 800582c: f001 fe89 bl 8007542 - /* Configure the SysTick IRQ priority */ - if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 8005830: 687b ldr r3, [r7, #4] - 8005832: 2b03 cmp r3, #3 - 8005834: d809 bhi.n 800584a - { - /* Configure the TIM IRQ priority */ - HAL_NVIC_SetPriority(TIM6_IRQn, TickPriority, 0U); - 8005836: 687b ldr r3, [r7, #4] - 8005838: 2200 movs r2, #0 - 800583a: 0019 movs r1, r3 - 800583c: 2011 movs r0, #17 - 800583e: f001 fe6b bl 8007518 - uwTickPrio = TickPriority; - 8005842: 4b0c ldr r3, [pc, #48] ; (8005874 ) - 8005844: 687a ldr r2, [r7, #4] - 8005846: 601a str r2, [r3, #0] - 8005848: e003 b.n 8005852 - } - else - { - status = HAL_ERROR; - 800584a: 232b movs r3, #43 ; 0x2b - 800584c: 18fb adds r3, r7, r3 - 800584e: 2201 movs r2, #1 - 8005850: 701a strb r2, [r3, #0] - } - } - } - - /* Return function status */ - return status; - 8005852: 232b movs r3, #43 ; 0x2b - 8005854: 18fb adds r3, r7, r3 - 8005856: 781b ldrb r3, [r3, #0] -} - 8005858: 0018 movs r0, r3 - 800585a: 46bd mov sp, r7 - 800585c: b00c add sp, #48 ; 0x30 - 800585e: bdb0 pop {r4, r5, r7, pc} - 8005860: 40021000 .word 0x40021000 - 8005864: 000f4240 .word 0x000f4240 - 8005868: 20000210 .word 0x20000210 - 800586c: 40001000 .word 0x40001000 - 8005870: 000003e7 .word 0x000003e7 - 8005874: 20000044 .word 0x20000044 - -08005878 : -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - 8005878: b580 push {r7, lr} - 800587a: 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) - 800587c: e7fe b.n 800587c - -0800587e : - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - 800587e: b580 push {r7, lr} - 8005880: af00 add r7, sp, #0 - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - 8005882: e7fe b.n 8005882 - -08005884 : - -/** - * @brief This function handles TIM6 global interrupt. - */ -void TIM6_IRQHandler(void) -{ - 8005884: b580 push {r7, lr} - 8005886: af00 add r7, sp, #0 - /* USER CODE BEGIN TIM6_IRQn 0 */ - - /* USER CODE END TIM6_IRQn 0 */ - HAL_TIM_IRQHandler(&htim6); - 8005888: 4b03 ldr r3, [pc, #12] ; (8005898 ) - 800588a: 0018 movs r0, r3 - 800588c: f003 ff4e bl 800972c - /* USER CODE BEGIN TIM6_IRQn 1 */ - - /* USER CODE END TIM6_IRQn 1 */ -} - 8005890: 46c0 nop ; (mov r8, r8) - 8005892: 46bd mov sp, r7 - 8005894: bd80 pop {r7, pc} - 8005896: 46c0 nop ; (mov r8, r8) - 8005898: 20000210 .word 0x20000210 - -0800589c : - -/** - * @brief This function handles TIM17 global interrupt. - */ -void TIM17_IRQHandler(void) -{ - 800589c: b580 push {r7, lr} - 800589e: af00 add r7, sp, #0 - /* USER CODE BEGIN TIM17_IRQn 0 */ - - /* USER CODE END TIM17_IRQn 0 */ - HAL_TIM_IRQHandler(&htim17); - 80058a0: 4b03 ldr r3, [pc, #12] ; (80058b0 ) - 80058a2: 0018 movs r0, r3 - 80058a4: f003 ff42 bl 800972c - /* USER CODE BEGIN TIM17_IRQn 1 */ - - /* USER CODE END TIM17_IRQn 1 */ -} - 80058a8: 46c0 nop ; (mov r8, r8) - 80058aa: 46bd mov sp, r7 - 80058ac: bd80 pop {r7, pc} - 80058ae: 46c0 nop ; (mov r8, r8) - 80058b0: 20000344 .word 0x20000344 - -080058b4 <_sbrk>: - * - * @param incr Memory size - * @return Pointer to allocated memory - */ -void *_sbrk(ptrdiff_t incr) -{ - 80058b4: b580 push {r7, lr} - 80058b6: b086 sub sp, #24 - 80058b8: af00 add r7, sp, #0 - 80058ba: 6078 str r0, [r7, #4] - extern uint8_t _end; /* Symbol defined in the linker script */ - extern uint8_t _estack; /* Symbol defined in the linker script */ - extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ - const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; - 80058bc: 4a14 ldr r2, [pc, #80] ; (8005910 <_sbrk+0x5c>) - 80058be: 4b15 ldr r3, [pc, #84] ; (8005914 <_sbrk+0x60>) - 80058c0: 1ad3 subs r3, r2, r3 - 80058c2: 617b str r3, [r7, #20] - const uint8_t *max_heap = (uint8_t *)stack_limit; - 80058c4: 697b ldr r3, [r7, #20] - 80058c6: 613b str r3, [r7, #16] - uint8_t *prev_heap_end; - - /* Initialize heap end at first call */ - if (NULL == __sbrk_heap_end) - 80058c8: 4b13 ldr r3, [pc, #76] ; (8005918 <_sbrk+0x64>) - 80058ca: 681b ldr r3, [r3, #0] - 80058cc: 2b00 cmp r3, #0 - 80058ce: d102 bne.n 80058d6 <_sbrk+0x22> - { - __sbrk_heap_end = &_end; - 80058d0: 4b11 ldr r3, [pc, #68] ; (8005918 <_sbrk+0x64>) - 80058d2: 4a12 ldr r2, [pc, #72] ; (800591c <_sbrk+0x68>) - 80058d4: 601a str r2, [r3, #0] - } - - /* Protect heap from growing into the reserved MSP stack */ - if (__sbrk_heap_end + incr > max_heap) - 80058d6: 4b10 ldr r3, [pc, #64] ; (8005918 <_sbrk+0x64>) - 80058d8: 681a ldr r2, [r3, #0] - 80058da: 687b ldr r3, [r7, #4] - 80058dc: 18d3 adds r3, r2, r3 - 80058de: 693a ldr r2, [r7, #16] - 80058e0: 429a cmp r2, r3 - 80058e2: d207 bcs.n 80058f4 <_sbrk+0x40> - { - errno = ENOMEM; - 80058e4: f009 f95e bl 800eba4 <__errno> - 80058e8: 0003 movs r3, r0 - 80058ea: 220c movs r2, #12 - 80058ec: 601a str r2, [r3, #0] - return (void *)-1; - 80058ee: 2301 movs r3, #1 - 80058f0: 425b negs r3, r3 - 80058f2: e009 b.n 8005908 <_sbrk+0x54> - } - - prev_heap_end = __sbrk_heap_end; - 80058f4: 4b08 ldr r3, [pc, #32] ; (8005918 <_sbrk+0x64>) - 80058f6: 681b ldr r3, [r3, #0] - 80058f8: 60fb str r3, [r7, #12] - __sbrk_heap_end += incr; - 80058fa: 4b07 ldr r3, [pc, #28] ; (8005918 <_sbrk+0x64>) - 80058fc: 681a ldr r2, [r3, #0] - 80058fe: 687b ldr r3, [r7, #4] - 8005900: 18d2 adds r2, r2, r3 - 8005902: 4b05 ldr r3, [pc, #20] ; (8005918 <_sbrk+0x64>) - 8005904: 601a str r2, [r3, #0] - - return (void *)prev_heap_end; - 8005906: 68fb ldr r3, [r7, #12] -} - 8005908: 0018 movs r0, r3 - 800590a: 46bd mov sp, r7 - 800590c: b006 add sp, #24 - 800590e: bd80 pop {r7, pc} - 8005910: 20009000 .word 0x20009000 - 8005914: 00000400 .word 0x00000400 - 8005918: 2000025c .word 0x2000025c - 800591c: 20002a40 .word 0x20002a40 - -08005920 : - * @brief Setup the microcontroller system. - * @param None - * @retval None - */ -void SystemInit(void) -{ - 8005920: b580 push {r7, lr} - 8005922: af00 add r7, sp, #0 - /* Configure the Vector Table location -------------------------------------*/ -#if defined(USER_VECT_TAB_ADDRESS) - SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation */ -#endif /* USER_VECT_TAB_ADDRESS */ -} - 8005924: 46c0 nop ; (mov r8, r8) - 8005926: 46bd mov sp, r7 - 8005928: bd80 pop {r7, pc} - ... - -0800592c : -TIM_HandleTypeDef htim15; -TIM_HandleTypeDef htim17; - -/* TIM1 init function */ -void MX_TIM1_Init(void) -{ - 800592c: b580 push {r7, lr} - 800592e: b0a4 sub sp, #144 ; 0x90 - 8005930: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM1_Init 0 */ - - /* USER CODE END TIM1_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8005932: 2380 movs r3, #128 ; 0x80 - 8005934: 18fb adds r3, r7, r3 - 8005936: 0018 movs r0, r3 - 8005938: 2310 movs r3, #16 - 800593a: 001a movs r2, r3 - 800593c: 2100 movs r1, #0 - 800593e: f009 f966 bl 800ec0e - TIM_SlaveConfigTypeDef sSlaveConfig = {0}; - 8005942: 236c movs r3, #108 ; 0x6c - 8005944: 18fb adds r3, r7, r3 - 8005946: 0018 movs r0, r3 - 8005948: 2314 movs r3, #20 - 800594a: 001a movs r2, r3 - 800594c: 2100 movs r1, #0 - 800594e: f009 f95e bl 800ec0e - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8005952: 2360 movs r3, #96 ; 0x60 - 8005954: 18fb adds r3, r7, r3 - 8005956: 0018 movs r0, r3 - 8005958: 230c movs r3, #12 - 800595a: 001a movs r2, r3 - 800595c: 2100 movs r1, #0 - 800595e: f009 f956 bl 800ec0e - TIM_IC_InitTypeDef sConfigIC = {0}; - 8005962: 2350 movs r3, #80 ; 0x50 - 8005964: 18fb adds r3, r7, r3 - 8005966: 0018 movs r0, r3 - 8005968: 2310 movs r3, #16 - 800596a: 001a movs r2, r3 - 800596c: 2100 movs r1, #0 - 800596e: f009 f94e bl 800ec0e - TIM_OC_InitTypeDef sConfigOC = {0}; - 8005972: 2334 movs r3, #52 ; 0x34 - 8005974: 18fb adds r3, r7, r3 - 8005976: 0018 movs r0, r3 - 8005978: 231c movs r3, #28 - 800597a: 001a movs r2, r3 - 800597c: 2100 movs r1, #0 - 800597e: f009 f946 bl 800ec0e - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; - 8005982: 003b movs r3, r7 - 8005984: 0018 movs r0, r3 - 8005986: 2334 movs r3, #52 ; 0x34 - 8005988: 001a movs r2, r3 - 800598a: 2100 movs r1, #0 - 800598c: f009 f93f bl 800ec0e - - /* USER CODE BEGIN TIM1_Init 1 */ - - /* USER CODE END TIM1_Init 1 */ - htim1.Instance = TIM1; - 8005990: 4b75 ldr r3, [pc, #468] ; (8005b68 ) - 8005992: 4a76 ldr r2, [pc, #472] ; (8005b6c ) - 8005994: 601a str r2, [r3, #0] - htim1.Init.Prescaler = 640-1; - 8005996: 4b74 ldr r3, [pc, #464] ; (8005b68 ) - 8005998: 4a75 ldr r2, [pc, #468] ; (8005b70 ) - 800599a: 605a str r2, [r3, #4] - htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - 800599c: 4b72 ldr r3, [pc, #456] ; (8005b68 ) - 800599e: 2200 movs r2, #0 - 80059a0: 609a str r2, [r3, #8] - htim1.Init.Period = 999; - 80059a2: 4b71 ldr r3, [pc, #452] ; (8005b68 ) - 80059a4: 4a73 ldr r2, [pc, #460] ; (8005b74 ) - 80059a6: 60da str r2, [r3, #12] - htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 80059a8: 4b6f ldr r3, [pc, #444] ; (8005b68 ) - 80059aa: 2200 movs r2, #0 - 80059ac: 611a str r2, [r3, #16] - htim1.Init.RepetitionCounter = 0; - 80059ae: 4b6e ldr r3, [pc, #440] ; (8005b68 ) - 80059b0: 2200 movs r2, #0 - 80059b2: 615a str r2, [r3, #20] - htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 80059b4: 4b6c ldr r3, [pc, #432] ; (8005b68 ) - 80059b6: 2200 movs r2, #0 - 80059b8: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim1) != HAL_OK) - 80059ba: 4b6b ldr r3, [pc, #428] ; (8005b68 ) - 80059bc: 0018 movs r0, r3 - 80059be: f003 fb5f bl 8009080 - 80059c2: 1e03 subs r3, r0, #0 - 80059c4: d001 beq.n 80059ca - { - Error_Handler(); - 80059c6: f7fd fedb bl 8003780 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 80059ca: 2180 movs r1, #128 ; 0x80 - 80059cc: 187b adds r3, r7, r1 - 80059ce: 2280 movs r2, #128 ; 0x80 - 80059d0: 0152 lsls r2, r2, #5 - 80059d2: 601a str r2, [r3, #0] - if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) - 80059d4: 187a adds r2, r7, r1 - 80059d6: 4b64 ldr r3, [pc, #400] ; (8005b68 ) - 80059d8: 0011 movs r1, r2 - 80059da: 0018 movs r0, r3 - 80059dc: f004 f97c bl 8009cd8 - 80059e0: 1e03 subs r3, r0, #0 - 80059e2: d001 beq.n 80059e8 - { - Error_Handler(); - 80059e4: f7fd fecc bl 8003780 - } - if (HAL_TIM_IC_Init(&htim1) != HAL_OK) - 80059e8: 4b5f ldr r3, [pc, #380] ; (8005b68 ) - 80059ea: 0018 movs r0, r3 - 80059ec: f003 fd68 bl 80094c0 - 80059f0: 1e03 subs r3, r0, #0 - 80059f2: d001 beq.n 80059f8 - { - Error_Handler(); - 80059f4: f7fd fec4 bl 8003780 - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - 80059f8: 4b5b ldr r3, [pc, #364] ; (8005b68 ) - 80059fa: 0018 movs r0, r3 - 80059fc: f003 fc1c bl 8009238 - 8005a00: 1e03 subs r3, r0, #0 - 8005a02: d001 beq.n 8005a08 - { - Error_Handler(); - 8005a04: f7fd febc bl 8003780 - } - if (HAL_TIM_OnePulse_Init(&htim1, TIM_OPMODE_SINGLE) != HAL_OK) - 8005a08: 4b57 ldr r3, [pc, #348] ; (8005b68 ) - 8005a0a: 2108 movs r1, #8 - 8005a0c: 0018 movs r0, r3 - 8005a0e: f003 fdb7 bl 8009580 - 8005a12: 1e03 subs r3, r0, #0 - 8005a14: d001 beq.n 8005a1a - { - Error_Handler(); - 8005a16: f7fd feb3 bl 8003780 - } - sSlaveConfig.SlaveMode = TIM_SLAVEMODE_COMBINED_RESETTRIGGER; - 8005a1a: 216c movs r1, #108 ; 0x6c - 8005a1c: 187b adds r3, r7, r1 - 8005a1e: 2280 movs r2, #128 ; 0x80 - 8005a20: 0252 lsls r2, r2, #9 - 8005a22: 601a str r2, [r3, #0] - sSlaveConfig.InputTrigger = TIM_TS_TI1FP1; - 8005a24: 187b adds r3, r7, r1 - 8005a26: 2250 movs r2, #80 ; 0x50 - 8005a28: 605a str r2, [r3, #4] - sSlaveConfig.TriggerPolarity = TIM_INPUTCHANNELPOLARITY_RISING; - 8005a2a: 187b adds r3, r7, r1 - 8005a2c: 2200 movs r2, #0 - 8005a2e: 609a str r2, [r3, #8] - sSlaveConfig.TriggerFilter = 0; - 8005a30: 187b adds r3, r7, r1 - 8005a32: 2200 movs r2, #0 - 8005a34: 611a str r2, [r3, #16] - if (HAL_TIM_SlaveConfigSynchro(&htim1, &sSlaveConfig) != HAL_OK) - 8005a36: 187a adds r2, r7, r1 - 8005a38: 4b4b ldr r3, [pc, #300] ; (8005b68 ) - 8005a3a: 0011 movs r1, r2 - 8005a3c: 0018 movs r0, r3 - 8005a3e: f004 fa21 bl 8009e84 - 8005a42: 1e03 subs r3, r0, #0 - 8005a44: d001 beq.n 8005a4a - { - Error_Handler(); - 8005a46: f7fd fe9b bl 8003780 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 8005a4a: 2160 movs r1, #96 ; 0x60 - 8005a4c: 187b adds r3, r7, r1 - 8005a4e: 2200 movs r2, #0 - 8005a50: 601a str r2, [r3, #0] - sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET; - 8005a52: 187b adds r3, r7, r1 - 8005a54: 2200 movs r2, #0 - 8005a56: 605a str r2, [r3, #4] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 8005a58: 187b adds r3, r7, r1 - 8005a5a: 2200 movs r2, #0 - 8005a5c: 609a str r2, [r3, #8] - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - 8005a5e: 187a adds r2, r7, r1 - 8005a60: 4b41 ldr r3, [pc, #260] ; (8005b68 ) - 8005a62: 0011 movs r1, r2 - 8005a64: 0018 movs r0, r3 - 8005a66: f005 f823 bl 800aab0 - 8005a6a: 1e03 subs r3, r0, #0 - 8005a6c: d001 beq.n 8005a72 - { - Error_Handler(); - 8005a6e: f7fd fe87 bl 8003780 - } - sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING; - 8005a72: 2150 movs r1, #80 ; 0x50 - 8005a74: 187b adds r3, r7, r1 - 8005a76: 2200 movs r2, #0 - 8005a78: 601a str r2, [r3, #0] - sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI; - 8005a7a: 187b adds r3, r7, r1 - 8005a7c: 2201 movs r2, #1 - 8005a7e: 605a str r2, [r3, #4] - sConfigIC.ICPrescaler = TIM_ICPSC_DIV1; - 8005a80: 187b adds r3, r7, r1 - 8005a82: 2200 movs r2, #0 - 8005a84: 609a str r2, [r3, #8] - sConfigIC.ICFilter = 0; - 8005a86: 187b adds r3, r7, r1 - 8005a88: 2200 movs r2, #0 - 8005a8a: 60da str r2, [r3, #12] - if (HAL_TIM_IC_ConfigChannel(&htim1, &sConfigIC, TIM_CHANNEL_1) != HAL_OK) - 8005a8c: 1879 adds r1, r7, r1 - 8005a8e: 4b36 ldr r3, [pc, #216] ; (8005b68 ) - 8005a90: 2200 movs r2, #0 - 8005a92: 0018 movs r0, r3 - 8005a94: f003 ff7c bl 8009990 - 8005a98: 1e03 subs r3, r0, #0 - 8005a9a: d001 beq.n 8005aa0 - { - Error_Handler(); - 8005a9c: f7fd fe70 bl 8003780 - } - sConfigOC.OCMode = TIM_OCMODE_PWM2; - 8005aa0: 2134 movs r1, #52 ; 0x34 - 8005aa2: 187b adds r3, r7, r1 - 8005aa4: 2270 movs r2, #112 ; 0x70 - 8005aa6: 601a str r2, [r3, #0] - sConfigOC.Pulse = 1020; - 8005aa8: 187b adds r3, r7, r1 - 8005aaa: 22ff movs r2, #255 ; 0xff - 8005aac: 0092 lsls r2, r2, #2 - 8005aae: 605a str r2, [r3, #4] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8005ab0: 187b adds r3, r7, r1 - 8005ab2: 2200 movs r2, #0 - 8005ab4: 609a str r2, [r3, #8] - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - 8005ab6: 187b adds r3, r7, r1 - 8005ab8: 2200 movs r2, #0 - 8005aba: 60da str r2, [r3, #12] - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 8005abc: 187b adds r3, r7, r1 - 8005abe: 2200 movs r2, #0 - 8005ac0: 611a str r2, [r3, #16] - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - 8005ac2: 187b adds r3, r7, r1 - 8005ac4: 2200 movs r2, #0 - 8005ac6: 615a str r2, [r3, #20] - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - 8005ac8: 187b adds r3, r7, r1 - 8005aca: 2200 movs r2, #0 - 8005acc: 619a str r2, [r3, #24] - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 8005ace: 1879 adds r1, r7, r1 - 8005ad0: 4b25 ldr r3, [pc, #148] ; (8005b68 ) - 8005ad2: 2204 movs r2, #4 - 8005ad4: 0018 movs r0, r3 - 8005ad6: f003 ffff bl 8009ad8 - 8005ada: 1e03 subs r3, r0, #0 - 8005adc: d001 beq.n 8005ae2 - { - Error_Handler(); - 8005ade: f7fd fe4f bl 8003780 - } - __HAL_TIM_DISABLE_OCxPRELOAD(&htim1, TIM_CHANNEL_2); - 8005ae2: 4b21 ldr r3, [pc, #132] ; (8005b68 ) - 8005ae4: 681b ldr r3, [r3, #0] - 8005ae6: 699a ldr r2, [r3, #24] - 8005ae8: 4b1f ldr r3, [pc, #124] ; (8005b68 ) - 8005aea: 681b ldr r3, [r3, #0] - 8005aec: 4922 ldr r1, [pc, #136] ; (8005b78 ) - 8005aee: 400a ands r2, r1 - 8005af0: 619a str r2, [r3, #24] - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - 8005af2: 003b movs r3, r7 - 8005af4: 2200 movs r2, #0 - 8005af6: 601a str r2, [r3, #0] - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - 8005af8: 003b movs r3, r7 - 8005afa: 2200 movs r2, #0 - 8005afc: 605a str r2, [r3, #4] - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - 8005afe: 003b movs r3, r7 - 8005b00: 2200 movs r2, #0 - 8005b02: 609a str r2, [r3, #8] - sBreakDeadTimeConfig.DeadTime = 0; - 8005b04: 003b movs r3, r7 - 8005b06: 2200 movs r2, #0 - 8005b08: 60da str r2, [r3, #12] - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - 8005b0a: 003b movs r3, r7 - 8005b0c: 2200 movs r2, #0 - 8005b0e: 611a str r2, [r3, #16] - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - 8005b10: 003b movs r3, r7 - 8005b12: 2280 movs r2, #128 ; 0x80 - 8005b14: 0192 lsls r2, r2, #6 - 8005b16: 615a str r2, [r3, #20] - sBreakDeadTimeConfig.BreakFilter = 0; - 8005b18: 003b movs r3, r7 - 8005b1a: 2200 movs r2, #0 - 8005b1c: 619a str r2, [r3, #24] - sBreakDeadTimeConfig.BreakAFMode = TIM_BREAK_AFMODE_INPUT; - 8005b1e: 003b movs r3, r7 - 8005b20: 2200 movs r2, #0 - 8005b22: 61da str r2, [r3, #28] - sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE; - 8005b24: 003b movs r3, r7 - 8005b26: 2200 movs r2, #0 - 8005b28: 621a str r2, [r3, #32] - sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH; - 8005b2a: 003b movs r3, r7 - 8005b2c: 2280 movs r2, #128 ; 0x80 - 8005b2e: 0492 lsls r2, r2, #18 - 8005b30: 625a str r2, [r3, #36] ; 0x24 - sBreakDeadTimeConfig.Break2Filter = 0; - 8005b32: 003b movs r3, r7 - 8005b34: 2200 movs r2, #0 - 8005b36: 629a str r2, [r3, #40] ; 0x28 - sBreakDeadTimeConfig.Break2AFMode = TIM_BREAK_AFMODE_INPUT; - 8005b38: 003b movs r3, r7 - 8005b3a: 2200 movs r2, #0 - 8005b3c: 62da str r2, [r3, #44] ; 0x2c - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - 8005b3e: 003b movs r3, r7 - 8005b40: 2200 movs r2, #0 - 8005b42: 631a str r2, [r3, #48] ; 0x30 - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - 8005b44: 003a movs r2, r7 - 8005b46: 4b08 ldr r3, [pc, #32] ; (8005b68 ) - 8005b48: 0011 movs r1, r2 - 8005b4a: 0018 movs r0, r3 - 8005b4c: f005 f818 bl 800ab80 - 8005b50: 1e03 subs r3, r0, #0 - 8005b52: d001 beq.n 8005b58 - { - Error_Handler(); - 8005b54: f7fd fe14 bl 8003780 - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - 8005b58: 4b03 ldr r3, [pc, #12] ; (8005b68 ) - 8005b5a: 0018 movs r0, r3 - 8005b5c: f000 f9e0 bl 8005f20 - -} - 8005b60: 46c0 nop ; (mov r8, r8) - 8005b62: 46bd mov sp, r7 - 8005b64: b024 add sp, #144 ; 0x90 - 8005b66: bd80 pop {r7, pc} - 8005b68: 20000260 .word 0x20000260 - 8005b6c: 40012c00 .word 0x40012c00 - 8005b70: 0000027f .word 0x0000027f - 8005b74: 000003e7 .word 0x000003e7 - 8005b78: fffff7ff .word 0xfffff7ff - -08005b7c : -/* TIM14 init function */ -void MX_TIM14_Init(void) -{ - 8005b7c: b580 push {r7, lr} - 8005b7e: b088 sub sp, #32 - 8005b80: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM14_Init 0 */ - - /* USER CODE END TIM14_Init 0 */ - - TIM_OC_InitTypeDef sConfigOC = {0}; - 8005b82: 1d3b adds r3, r7, #4 - 8005b84: 0018 movs r0, r3 - 8005b86: 231c movs r3, #28 - 8005b88: 001a movs r2, r3 - 8005b8a: 2100 movs r1, #0 - 8005b8c: f009 f83f bl 800ec0e - - /* USER CODE BEGIN TIM14_Init 1 */ - - /* USER CODE END TIM14_Init 1 */ - htim14.Instance = TIM14; - 8005b90: 4b1f ldr r3, [pc, #124] ; (8005c10 ) - 8005b92: 4a20 ldr r2, [pc, #128] ; (8005c14 ) - 8005b94: 601a str r2, [r3, #0] - htim14.Init.Prescaler = 0; - 8005b96: 4b1e ldr r3, [pc, #120] ; (8005c10 ) - 8005b98: 2200 movs r2, #0 - 8005b9a: 605a str r2, [r3, #4] - htim14.Init.CounterMode = TIM_COUNTERMODE_UP; - 8005b9c: 4b1c ldr r3, [pc, #112] ; (8005c10 ) - 8005b9e: 2200 movs r2, #0 - 8005ba0: 609a str r2, [r3, #8] - htim14.Init.Period = 65535; - 8005ba2: 4b1b ldr r3, [pc, #108] ; (8005c10 ) - 8005ba4: 4a1c ldr r2, [pc, #112] ; (8005c18 ) - 8005ba6: 60da str r2, [r3, #12] - htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8005ba8: 4b19 ldr r3, [pc, #100] ; (8005c10 ) - 8005baa: 2200 movs r2, #0 - 8005bac: 611a str r2, [r3, #16] - htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8005bae: 4b18 ldr r3, [pc, #96] ; (8005c10 ) - 8005bb0: 2200 movs r2, #0 - 8005bb2: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim14) != HAL_OK) - 8005bb4: 4b16 ldr r3, [pc, #88] ; (8005c10 ) - 8005bb6: 0018 movs r0, r3 - 8005bb8: f003 fa62 bl 8009080 - 8005bbc: 1e03 subs r3, r0, #0 - 8005bbe: d001 beq.n 8005bc4 - { - Error_Handler(); - 8005bc0: f7fd fdde bl 8003780 - } - if (HAL_TIM_PWM_Init(&htim14) != HAL_OK) - 8005bc4: 4b12 ldr r3, [pc, #72] ; (8005c10 ) - 8005bc6: 0018 movs r0, r3 - 8005bc8: f003 fb36 bl 8009238 - 8005bcc: 1e03 subs r3, r0, #0 - 8005bce: d001 beq.n 8005bd4 - { - Error_Handler(); - 8005bd0: f7fd fdd6 bl 8003780 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 8005bd4: 1d3b adds r3, r7, #4 - 8005bd6: 2260 movs r2, #96 ; 0x60 - 8005bd8: 601a str r2, [r3, #0] - sConfigOC.Pulse = 0; - 8005bda: 1d3b adds r3, r7, #4 - 8005bdc: 2200 movs r2, #0 - 8005bde: 605a str r2, [r3, #4] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8005be0: 1d3b adds r3, r7, #4 - 8005be2: 2200 movs r2, #0 - 8005be4: 609a str r2, [r3, #8] - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 8005be6: 1d3b adds r3, r7, #4 - 8005be8: 2200 movs r2, #0 - 8005bea: 611a str r2, [r3, #16] - if (HAL_TIM_PWM_ConfigChannel(&htim14, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 8005bec: 1d39 adds r1, r7, #4 - 8005bee: 4b08 ldr r3, [pc, #32] ; (8005c10 ) - 8005bf0: 2200 movs r2, #0 - 8005bf2: 0018 movs r0, r3 - 8005bf4: f003 ff70 bl 8009ad8 - 8005bf8: 1e03 subs r3, r0, #0 - 8005bfa: d001 beq.n 8005c00 - { - Error_Handler(); - 8005bfc: f7fd fdc0 bl 8003780 - } - /* USER CODE BEGIN TIM14_Init 2 */ - - /* USER CODE END TIM14_Init 2 */ - HAL_TIM_MspPostInit(&htim14); - 8005c00: 4b03 ldr r3, [pc, #12] ; (8005c10 ) - 8005c02: 0018 movs r0, r3 - 8005c04: f000 f98c bl 8005f20 - -} - 8005c08: 46c0 nop ; (mov r8, r8) - 8005c0a: 46bd mov sp, r7 - 8005c0c: b008 add sp, #32 - 8005c0e: bd80 pop {r7, pc} - 8005c10: 200002ac .word 0x200002ac - 8005c14: 40002000 .word 0x40002000 - 8005c18: 0000ffff .word 0x0000ffff - -08005c1c : -/* TIM15 init function */ -void MX_TIM15_Init(void) -{ - 8005c1c: b580 push {r7, lr} - 8005c1e: b09c sub sp, #112 ; 0x70 - 8005c20: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM15_Init 0 */ - - /* USER CODE END TIM15_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8005c22: 2360 movs r3, #96 ; 0x60 - 8005c24: 18fb adds r3, r7, r3 - 8005c26: 0018 movs r0, r3 - 8005c28: 2310 movs r3, #16 - 8005c2a: 001a movs r2, r3 - 8005c2c: 2100 movs r1, #0 - 8005c2e: f008 ffee bl 800ec0e - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8005c32: 2354 movs r3, #84 ; 0x54 - 8005c34: 18fb adds r3, r7, r3 - 8005c36: 0018 movs r0, r3 - 8005c38: 230c movs r3, #12 - 8005c3a: 001a movs r2, r3 - 8005c3c: 2100 movs r1, #0 - 8005c3e: f008 ffe6 bl 800ec0e - TIM_OC_InitTypeDef sConfigOC = {0}; - 8005c42: 2338 movs r3, #56 ; 0x38 - 8005c44: 18fb adds r3, r7, r3 - 8005c46: 0018 movs r0, r3 - 8005c48: 231c movs r3, #28 - 8005c4a: 001a movs r2, r3 - 8005c4c: 2100 movs r1, #0 - 8005c4e: f008 ffde bl 800ec0e - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; - 8005c52: 1d3b adds r3, r7, #4 - 8005c54: 0018 movs r0, r3 - 8005c56: 2334 movs r3, #52 ; 0x34 - 8005c58: 001a movs r2, r3 - 8005c5a: 2100 movs r1, #0 - 8005c5c: f008 ffd7 bl 800ec0e - - /* USER CODE BEGIN TIM15_Init 1 */ - - /* USER CODE END TIM15_Init 1 */ - htim15.Instance = TIM15; - 8005c60: 4b48 ldr r3, [pc, #288] ; (8005d84 ) - 8005c62: 4a49 ldr r2, [pc, #292] ; (8005d88 ) - 8005c64: 601a str r2, [r3, #0] - htim15.Init.Prescaler = 320-1; - 8005c66: 4b47 ldr r3, [pc, #284] ; (8005d84 ) - 8005c68: 2240 movs r2, #64 ; 0x40 - 8005c6a: 32ff adds r2, #255 ; 0xff - 8005c6c: 605a str r2, [r3, #4] - htim15.Init.CounterMode = TIM_COUNTERMODE_UP; - 8005c6e: 4b45 ldr r3, [pc, #276] ; (8005d84 ) - 8005c70: 2200 movs r2, #0 - 8005c72: 609a str r2, [r3, #8] - htim15.Init.Period = 100-1; - 8005c74: 4b43 ldr r3, [pc, #268] ; (8005d84 ) - 8005c76: 2263 movs r2, #99 ; 0x63 - 8005c78: 60da str r2, [r3, #12] - htim15.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8005c7a: 4b42 ldr r3, [pc, #264] ; (8005d84 ) - 8005c7c: 2200 movs r2, #0 - 8005c7e: 611a str r2, [r3, #16] - htim15.Init.RepetitionCounter = 0; - 8005c80: 4b40 ldr r3, [pc, #256] ; (8005d84 ) - 8005c82: 2200 movs r2, #0 - 8005c84: 615a str r2, [r3, #20] - htim15.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8005c86: 4b3f ldr r3, [pc, #252] ; (8005d84 ) - 8005c88: 2200 movs r2, #0 - 8005c8a: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim15) != HAL_OK) - 8005c8c: 4b3d ldr r3, [pc, #244] ; (8005d84 ) - 8005c8e: 0018 movs r0, r3 - 8005c90: f003 f9f6 bl 8009080 - 8005c94: 1e03 subs r3, r0, #0 - 8005c96: d001 beq.n 8005c9c - { - Error_Handler(); - 8005c98: f7fd fd72 bl 8003780 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 8005c9c: 2160 movs r1, #96 ; 0x60 - 8005c9e: 187b adds r3, r7, r1 - 8005ca0: 2280 movs r2, #128 ; 0x80 - 8005ca2: 0152 lsls r2, r2, #5 - 8005ca4: 601a str r2, [r3, #0] - if (HAL_TIM_ConfigClockSource(&htim15, &sClockSourceConfig) != HAL_OK) - 8005ca6: 187a adds r2, r7, r1 - 8005ca8: 4b36 ldr r3, [pc, #216] ; (8005d84 ) - 8005caa: 0011 movs r1, r2 - 8005cac: 0018 movs r0, r3 - 8005cae: f004 f813 bl 8009cd8 - 8005cb2: 1e03 subs r3, r0, #0 - 8005cb4: d001 beq.n 8005cba - { - Error_Handler(); - 8005cb6: f7fd fd63 bl 8003780 - } - if (HAL_TIM_PWM_Init(&htim15) != HAL_OK) - 8005cba: 4b32 ldr r3, [pc, #200] ; (8005d84 ) - 8005cbc: 0018 movs r0, r3 - 8005cbe: f003 fabb bl 8009238 - 8005cc2: 1e03 subs r3, r0, #0 - 8005cc4: d001 beq.n 8005cca - { - Error_Handler(); - 8005cc6: f7fd fd5b bl 8003780 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 8005cca: 2154 movs r1, #84 ; 0x54 - 8005ccc: 187b adds r3, r7, r1 - 8005cce: 2200 movs r2, #0 - 8005cd0: 601a str r2, [r3, #0] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 8005cd2: 187b adds r3, r7, r1 - 8005cd4: 2200 movs r2, #0 - 8005cd6: 609a str r2, [r3, #8] - if (HAL_TIMEx_MasterConfigSynchronization(&htim15, &sMasterConfig) != HAL_OK) - 8005cd8: 187a adds r2, r7, r1 - 8005cda: 4b2a ldr r3, [pc, #168] ; (8005d84 ) - 8005cdc: 0011 movs r1, r2 - 8005cde: 0018 movs r0, r3 - 8005ce0: f004 fee6 bl 800aab0 - 8005ce4: 1e03 subs r3, r0, #0 - 8005ce6: d001 beq.n 8005cec - { - Error_Handler(); - 8005ce8: f7fd fd4a bl 8003780 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 8005cec: 2138 movs r1, #56 ; 0x38 - 8005cee: 187b adds r3, r7, r1 - 8005cf0: 2260 movs r2, #96 ; 0x60 - 8005cf2: 601a str r2, [r3, #0] - sConfigOC.Pulse = 0; - 8005cf4: 187b adds r3, r7, r1 - 8005cf6: 2200 movs r2, #0 - 8005cf8: 605a str r2, [r3, #4] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8005cfa: 187b adds r3, r7, r1 - 8005cfc: 2200 movs r2, #0 - 8005cfe: 609a str r2, [r3, #8] - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - 8005d00: 187b adds r3, r7, r1 - 8005d02: 2200 movs r2, #0 - 8005d04: 60da str r2, [r3, #12] - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 8005d06: 187b adds r3, r7, r1 - 8005d08: 2200 movs r2, #0 - 8005d0a: 611a str r2, [r3, #16] - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - 8005d0c: 187b adds r3, r7, r1 - 8005d0e: 2200 movs r2, #0 - 8005d10: 615a str r2, [r3, #20] - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - 8005d12: 187b adds r3, r7, r1 - 8005d14: 2200 movs r2, #0 - 8005d16: 619a str r2, [r3, #24] - if (HAL_TIM_PWM_ConfigChannel(&htim15, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 8005d18: 1879 adds r1, r7, r1 - 8005d1a: 4b1a ldr r3, [pc, #104] ; (8005d84 ) - 8005d1c: 2200 movs r2, #0 - 8005d1e: 0018 movs r0, r3 - 8005d20: f003 feda bl 8009ad8 - 8005d24: 1e03 subs r3, r0, #0 - 8005d26: d001 beq.n 8005d2c - { - Error_Handler(); - 8005d28: f7fd fd2a bl 8003780 - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - 8005d2c: 1d3b adds r3, r7, #4 - 8005d2e: 2200 movs r2, #0 - 8005d30: 601a str r2, [r3, #0] - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - 8005d32: 1d3b adds r3, r7, #4 - 8005d34: 2200 movs r2, #0 - 8005d36: 605a str r2, [r3, #4] - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - 8005d38: 1d3b adds r3, r7, #4 - 8005d3a: 2200 movs r2, #0 - 8005d3c: 609a str r2, [r3, #8] - sBreakDeadTimeConfig.DeadTime = 0; - 8005d3e: 1d3b adds r3, r7, #4 - 8005d40: 2200 movs r2, #0 - 8005d42: 60da str r2, [r3, #12] - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - 8005d44: 1d3b adds r3, r7, #4 - 8005d46: 2200 movs r2, #0 - 8005d48: 611a str r2, [r3, #16] - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - 8005d4a: 1d3b adds r3, r7, #4 - 8005d4c: 2280 movs r2, #128 ; 0x80 - 8005d4e: 0192 lsls r2, r2, #6 - 8005d50: 615a str r2, [r3, #20] - sBreakDeadTimeConfig.BreakFilter = 0; - 8005d52: 1d3b adds r3, r7, #4 - 8005d54: 2200 movs r2, #0 - 8005d56: 619a str r2, [r3, #24] - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - 8005d58: 1d3b adds r3, r7, #4 - 8005d5a: 2200 movs r2, #0 - 8005d5c: 631a str r2, [r3, #48] ; 0x30 - if (HAL_TIMEx_ConfigBreakDeadTime(&htim15, &sBreakDeadTimeConfig) != HAL_OK) - 8005d5e: 1d3a adds r2, r7, #4 - 8005d60: 4b08 ldr r3, [pc, #32] ; (8005d84 ) - 8005d62: 0011 movs r1, r2 - 8005d64: 0018 movs r0, r3 - 8005d66: f004 ff0b bl 800ab80 - 8005d6a: 1e03 subs r3, r0, #0 - 8005d6c: d001 beq.n 8005d72 - { - Error_Handler(); - 8005d6e: f7fd fd07 bl 8003780 - } - /* USER CODE BEGIN TIM15_Init 2 */ - - /* USER CODE END TIM15_Init 2 */ - HAL_TIM_MspPostInit(&htim15); - 8005d72: 4b04 ldr r3, [pc, #16] ; (8005d84 ) - 8005d74: 0018 movs r0, r3 - 8005d76: f000 f8d3 bl 8005f20 - -} - 8005d7a: 46c0 nop ; (mov r8, r8) - 8005d7c: 46bd mov sp, r7 - 8005d7e: b01c add sp, #112 ; 0x70 - 8005d80: bd80 pop {r7, pc} - 8005d82: 46c0 nop ; (mov r8, r8) - 8005d84: 200002f8 .word 0x200002f8 - 8005d88: 40014000 .word 0x40014000 - -08005d8c : -/* TIM17 init function */ -void MX_TIM17_Init(void) -{ - 8005d8c: b580 push {r7, lr} - 8005d8e: af00 add r7, sp, #0 - /* USER CODE END TIM17_Init 0 */ - - /* USER CODE BEGIN TIM17_Init 1 */ - - /* USER CODE END TIM17_Init 1 */ - htim17.Instance = TIM17; - 8005d90: 4b14 ldr r3, [pc, #80] ; (8005de4 ) - 8005d92: 4a15 ldr r2, [pc, #84] ; (8005de8 ) - 8005d94: 601a str r2, [r3, #0] - htim17.Init.Prescaler = 64000-1; - 8005d96: 4b13 ldr r3, [pc, #76] ; (8005de4 ) - 8005d98: 4a14 ldr r2, [pc, #80] ; (8005dec ) - 8005d9a: 605a str r2, [r3, #4] - htim17.Init.CounterMode = TIM_COUNTERMODE_UP; - 8005d9c: 4b11 ldr r3, [pc, #68] ; (8005de4 ) - 8005d9e: 2200 movs r2, #0 - 8005da0: 609a str r2, [r3, #8] - htim17.Init.Period = 999; - 8005da2: 4b10 ldr r3, [pc, #64] ; (8005de4 ) - 8005da4: 4a12 ldr r2, [pc, #72] ; (8005df0 ) - 8005da6: 60da str r2, [r3, #12] - htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8005da8: 4b0e ldr r3, [pc, #56] ; (8005de4 ) - 8005daa: 2200 movs r2, #0 - 8005dac: 611a str r2, [r3, #16] - htim17.Init.RepetitionCounter = 0; - 8005dae: 4b0d ldr r3, [pc, #52] ; (8005de4 ) - 8005db0: 2200 movs r2, #0 - 8005db2: 615a str r2, [r3, #20] - htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8005db4: 4b0b ldr r3, [pc, #44] ; (8005de4 ) - 8005db6: 2200 movs r2, #0 - 8005db8: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim17) != HAL_OK) - 8005dba: 4b0a ldr r3, [pc, #40] ; (8005de4 ) - 8005dbc: 0018 movs r0, r3 - 8005dbe: f003 f95f bl 8009080 - 8005dc2: 1e03 subs r3, r0, #0 - 8005dc4: d001 beq.n 8005dca - { - Error_Handler(); - 8005dc6: f7fd fcdb bl 8003780 - } - if (HAL_TIM_OnePulse_Init(&htim17, TIM_OPMODE_SINGLE) != HAL_OK) - 8005dca: 4b06 ldr r3, [pc, #24] ; (8005de4 ) - 8005dcc: 2108 movs r1, #8 - 8005dce: 0018 movs r0, r3 - 8005dd0: f003 fbd6 bl 8009580 - 8005dd4: 1e03 subs r3, r0, #0 - 8005dd6: d001 beq.n 8005ddc - { - Error_Handler(); - 8005dd8: f7fd fcd2 bl 8003780 - } - /* USER CODE BEGIN TIM17_Init 2 */ - - /* USER CODE END TIM17_Init 2 */ - -} - 8005ddc: 46c0 nop ; (mov r8, r8) - 8005dde: 46bd mov sp, r7 - 8005de0: bd80 pop {r7, pc} - 8005de2: 46c0 nop ; (mov r8, r8) - 8005de4: 20000344 .word 0x20000344 - 8005de8: 40014800 .word 0x40014800 - 8005dec: 0000f9ff .word 0x0000f9ff - 8005df0: 000003e7 .word 0x000003e7 - -08005df4 : - -void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) -{ - 8005df4: b590 push {r4, r7, lr} - 8005df6: b08d sub sp, #52 ; 0x34 - 8005df8: af00 add r7, sp, #0 - 8005dfa: 6078 str r0, [r7, #4] - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8005dfc: 241c movs r4, #28 - 8005dfe: 193b adds r3, r7, r4 - 8005e00: 0018 movs r0, r3 - 8005e02: 2314 movs r3, #20 - 8005e04: 001a movs r2, r3 - 8005e06: 2100 movs r1, #0 - 8005e08: f008 ff01 bl 800ec0e - if(tim_baseHandle->Instance==TIM1) - 8005e0c: 687b ldr r3, [r7, #4] - 8005e0e: 681b ldr r3, [r3, #0] - 8005e10: 4a3e ldr r2, [pc, #248] ; (8005f0c ) - 8005e12: 4293 cmp r3, r2 - 8005e14: d132 bne.n 8005e7c - { - /* USER CODE BEGIN TIM1_MspInit 0 */ - - /* USER CODE END TIM1_MspInit 0 */ - /* TIM1 clock enable */ - __HAL_RCC_TIM1_CLK_ENABLE(); - 8005e16: 4b3e ldr r3, [pc, #248] ; (8005f10 ) - 8005e18: 6c1a ldr r2, [r3, #64] ; 0x40 - 8005e1a: 4b3d ldr r3, [pc, #244] ; (8005f10 ) - 8005e1c: 2180 movs r1, #128 ; 0x80 - 8005e1e: 0109 lsls r1, r1, #4 - 8005e20: 430a orrs r2, r1 - 8005e22: 641a str r2, [r3, #64] ; 0x40 - 8005e24: 4b3a ldr r3, [pc, #232] ; (8005f10 ) - 8005e26: 6c1a ldr r2, [r3, #64] ; 0x40 - 8005e28: 2380 movs r3, #128 ; 0x80 - 8005e2a: 011b lsls r3, r3, #4 - 8005e2c: 4013 ands r3, r2 - 8005e2e: 61bb str r3, [r7, #24] - 8005e30: 69bb ldr r3, [r7, #24] - - __HAL_RCC_GPIOA_CLK_ENABLE(); - 8005e32: 4b37 ldr r3, [pc, #220] ; (8005f10 ) - 8005e34: 6b5a ldr r2, [r3, #52] ; 0x34 - 8005e36: 4b36 ldr r3, [pc, #216] ; (8005f10 ) - 8005e38: 2101 movs r1, #1 - 8005e3a: 430a orrs r2, r1 - 8005e3c: 635a str r2, [r3, #52] ; 0x34 - 8005e3e: 4b34 ldr r3, [pc, #208] ; (8005f10 ) - 8005e40: 6b5b ldr r3, [r3, #52] ; 0x34 - 8005e42: 2201 movs r2, #1 - 8005e44: 4013 ands r3, r2 - 8005e46: 617b str r3, [r7, #20] - 8005e48: 697b ldr r3, [r7, #20] - /**TIM1 GPIO Configuration - PA8 ------> TIM1_CH1 - */ - GPIO_InitStruct.Pin = TIM1_ZC_Pin; - 8005e4a: 193b adds r3, r7, r4 - 8005e4c: 2280 movs r2, #128 ; 0x80 - 8005e4e: 0052 lsls r2, r2, #1 - 8005e50: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8005e52: 0021 movs r1, r4 - 8005e54: 187b adds r3, r7, r1 - 8005e56: 2202 movs r2, #2 - 8005e58: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8005e5a: 187b adds r3, r7, r1 - 8005e5c: 2200 movs r2, #0 - 8005e5e: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8005e60: 187b adds r3, r7, r1 - 8005e62: 2200 movs r2, #0 - 8005e64: 60da str r2, [r3, #12] - GPIO_InitStruct.Alternate = GPIO_AF2_TIM1; - 8005e66: 187b adds r3, r7, r1 - 8005e68: 2202 movs r2, #2 - 8005e6a: 611a str r2, [r3, #16] - HAL_GPIO_Init(TIM1_ZC_GPIO_Port, &GPIO_InitStruct); - 8005e6c: 187a adds r2, r7, r1 - 8005e6e: 23a0 movs r3, #160 ; 0xa0 - 8005e70: 05db lsls r3, r3, #23 - 8005e72: 0011 movs r1, r2 - 8005e74: 0018 movs r0, r3 - 8005e76: f001 fb75 bl 8007564 - HAL_NVIC_EnableIRQ(TIM17_IRQn); - /* USER CODE BEGIN TIM17_MspInit 1 */ - - /* USER CODE END TIM17_MspInit 1 */ - } -} - 8005e7a: e042 b.n 8005f02 - else if(tim_baseHandle->Instance==TIM14) - 8005e7c: 687b ldr r3, [r7, #4] - 8005e7e: 681b ldr r3, [r3, #0] - 8005e80: 4a24 ldr r2, [pc, #144] ; (8005f14 ) - 8005e82: 4293 cmp r3, r2 - 8005e84: d10e bne.n 8005ea4 - __HAL_RCC_TIM14_CLK_ENABLE(); - 8005e86: 4b22 ldr r3, [pc, #136] ; (8005f10 ) - 8005e88: 6c1a ldr r2, [r3, #64] ; 0x40 - 8005e8a: 4b21 ldr r3, [pc, #132] ; (8005f10 ) - 8005e8c: 2180 movs r1, #128 ; 0x80 - 8005e8e: 0209 lsls r1, r1, #8 - 8005e90: 430a orrs r2, r1 - 8005e92: 641a str r2, [r3, #64] ; 0x40 - 8005e94: 4b1e ldr r3, [pc, #120] ; (8005f10 ) - 8005e96: 6c1a ldr r2, [r3, #64] ; 0x40 - 8005e98: 2380 movs r3, #128 ; 0x80 - 8005e9a: 021b lsls r3, r3, #8 - 8005e9c: 4013 ands r3, r2 - 8005e9e: 613b str r3, [r7, #16] - 8005ea0: 693b ldr r3, [r7, #16] -} - 8005ea2: e02e b.n 8005f02 - else if(tim_baseHandle->Instance==TIM15) - 8005ea4: 687b ldr r3, [r7, #4] - 8005ea6: 681b ldr r3, [r3, #0] - 8005ea8: 4a1b ldr r2, [pc, #108] ; (8005f18 ) - 8005eaa: 4293 cmp r3, r2 - 8005eac: d10e bne.n 8005ecc - __HAL_RCC_TIM15_CLK_ENABLE(); - 8005eae: 4b18 ldr r3, [pc, #96] ; (8005f10 ) - 8005eb0: 6c1a ldr r2, [r3, #64] ; 0x40 - 8005eb2: 4b17 ldr r3, [pc, #92] ; (8005f10 ) - 8005eb4: 2180 movs r1, #128 ; 0x80 - 8005eb6: 0249 lsls r1, r1, #9 - 8005eb8: 430a orrs r2, r1 - 8005eba: 641a str r2, [r3, #64] ; 0x40 - 8005ebc: 4b14 ldr r3, [pc, #80] ; (8005f10 ) - 8005ebe: 6c1a ldr r2, [r3, #64] ; 0x40 - 8005ec0: 2380 movs r3, #128 ; 0x80 - 8005ec2: 025b lsls r3, r3, #9 - 8005ec4: 4013 ands r3, r2 - 8005ec6: 60fb str r3, [r7, #12] - 8005ec8: 68fb ldr r3, [r7, #12] -} - 8005eca: e01a b.n 8005f02 - else if(tim_baseHandle->Instance==TIM17) - 8005ecc: 687b ldr r3, [r7, #4] - 8005ece: 681b ldr r3, [r3, #0] - 8005ed0: 4a12 ldr r2, [pc, #72] ; (8005f1c ) - 8005ed2: 4293 cmp r3, r2 - 8005ed4: d115 bne.n 8005f02 - __HAL_RCC_TIM17_CLK_ENABLE(); - 8005ed6: 4b0e ldr r3, [pc, #56] ; (8005f10 ) - 8005ed8: 6c1a ldr r2, [r3, #64] ; 0x40 - 8005eda: 4b0d ldr r3, [pc, #52] ; (8005f10 ) - 8005edc: 2180 movs r1, #128 ; 0x80 - 8005ede: 02c9 lsls r1, r1, #11 - 8005ee0: 430a orrs r2, r1 - 8005ee2: 641a str r2, [r3, #64] ; 0x40 - 8005ee4: 4b0a ldr r3, [pc, #40] ; (8005f10 ) - 8005ee6: 6c1a ldr r2, [r3, #64] ; 0x40 - 8005ee8: 2380 movs r3, #128 ; 0x80 - 8005eea: 02db lsls r3, r3, #11 - 8005eec: 4013 ands r3, r2 - 8005eee: 60bb str r3, [r7, #8] - 8005ef0: 68bb ldr r3, [r7, #8] - HAL_NVIC_SetPriority(TIM17_IRQn, 3, 0); - 8005ef2: 2200 movs r2, #0 - 8005ef4: 2103 movs r1, #3 - 8005ef6: 2016 movs r0, #22 - 8005ef8: f001 fb0e bl 8007518 - HAL_NVIC_EnableIRQ(TIM17_IRQn); - 8005efc: 2016 movs r0, #22 - 8005efe: f001 fb20 bl 8007542 -} - 8005f02: 46c0 nop ; (mov r8, r8) - 8005f04: 46bd mov sp, r7 - 8005f06: b00d add sp, #52 ; 0x34 - 8005f08: bd90 pop {r4, r7, pc} - 8005f0a: 46c0 nop ; (mov r8, r8) - 8005f0c: 40012c00 .word 0x40012c00 - 8005f10: 40021000 .word 0x40021000 - 8005f14: 40002000 .word 0x40002000 - 8005f18: 40014000 .word 0x40014000 - 8005f1c: 40014800 .word 0x40014800 - -08005f20 : -void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) -{ - 8005f20: b590 push {r4, r7, lr} - 8005f22: b08b sub sp, #44 ; 0x2c - 8005f24: af00 add r7, sp, #0 - 8005f26: 6078 str r0, [r7, #4] - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8005f28: 2414 movs r4, #20 - 8005f2a: 193b adds r3, r7, r4 - 8005f2c: 0018 movs r0, r3 - 8005f2e: 2314 movs r3, #20 - 8005f30: 001a movs r2, r3 - 8005f32: 2100 movs r1, #0 - 8005f34: f008 fe6b bl 800ec0e - if(timHandle->Instance==TIM1) - 8005f38: 687b ldr r3, [r7, #4] - 8005f3a: 681b ldr r3, [r3, #0] - 8005f3c: 4a3d ldr r2, [pc, #244] ; (8006034 ) - 8005f3e: 4293 cmp r3, r2 - 8005f40: d124 bne.n 8005f8c - { - /* USER CODE BEGIN TIM1_MspPostInit 0 */ - - /* USER CODE END TIM1_MspPostInit 0 */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - 8005f42: 4b3d ldr r3, [pc, #244] ; (8006038 ) - 8005f44: 6b5a ldr r2, [r3, #52] ; 0x34 - 8005f46: 4b3c ldr r3, [pc, #240] ; (8006038 ) - 8005f48: 2101 movs r1, #1 - 8005f4a: 430a orrs r2, r1 - 8005f4c: 635a str r2, [r3, #52] ; 0x34 - 8005f4e: 4b3a ldr r3, [pc, #232] ; (8006038 ) - 8005f50: 6b5b ldr r3, [r3, #52] ; 0x34 - 8005f52: 2201 movs r2, #1 - 8005f54: 4013 ands r3, r2 - 8005f56: 613b str r3, [r7, #16] - 8005f58: 693b ldr r3, [r7, #16] - /**TIM1 GPIO Configuration - PA9 ------> TIM1_CH2 - */ - GPIO_InitStruct.Pin = TIM1_GC_Pin; - 8005f5a: 193b adds r3, r7, r4 - 8005f5c: 2280 movs r2, #128 ; 0x80 - 8005f5e: 0092 lsls r2, r2, #2 - 8005f60: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8005f62: 0021 movs r1, r4 - 8005f64: 187b adds r3, r7, r1 - 8005f66: 2202 movs r2, #2 - 8005f68: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8005f6a: 187b adds r3, r7, r1 - 8005f6c: 2200 movs r2, #0 - 8005f6e: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8005f70: 187b adds r3, r7, r1 - 8005f72: 2200 movs r2, #0 - 8005f74: 60da str r2, [r3, #12] - GPIO_InitStruct.Alternate = GPIO_AF2_TIM1; - 8005f76: 187b adds r3, r7, r1 - 8005f78: 2202 movs r2, #2 - 8005f7a: 611a str r2, [r3, #16] - HAL_GPIO_Init(TIM1_GC_GPIO_Port, &GPIO_InitStruct); - 8005f7c: 187a adds r2, r7, r1 - 8005f7e: 23a0 movs r3, #160 ; 0xa0 - 8005f80: 05db lsls r3, r3, #23 - 8005f82: 0011 movs r1, r2 - 8005f84: 0018 movs r0, r3 - 8005f86: f001 faed bl 8007564 - /* USER CODE BEGIN TIM15_MspPostInit 1 */ - - /* USER CODE END TIM15_MspPostInit 1 */ - } - -} - 8005f8a: e04f b.n 800602c - else if(timHandle->Instance==TIM14) - 8005f8c: 687b ldr r3, [r7, #4] - 8005f8e: 681b ldr r3, [r3, #0] - 8005f90: 4a2a ldr r2, [pc, #168] ; (800603c ) - 8005f92: 4293 cmp r3, r2 - 8005f94: d123 bne.n 8005fde - __HAL_RCC_GPIOC_CLK_ENABLE(); - 8005f96: 4b28 ldr r3, [pc, #160] ; (8006038 ) - 8005f98: 6b5a ldr r2, [r3, #52] ; 0x34 - 8005f9a: 4b27 ldr r3, [pc, #156] ; (8006038 ) - 8005f9c: 2104 movs r1, #4 - 8005f9e: 430a orrs r2, r1 - 8005fa0: 635a str r2, [r3, #52] ; 0x34 - 8005fa2: 4b25 ldr r3, [pc, #148] ; (8006038 ) - 8005fa4: 6b5b ldr r3, [r3, #52] ; 0x34 - 8005fa6: 2204 movs r2, #4 - 8005fa8: 4013 ands r3, r2 - 8005faa: 60fb str r3, [r7, #12] - 8005fac: 68fb ldr r3, [r7, #12] - GPIO_InitStruct.Pin = FAN_PWM_Pin; - 8005fae: 2114 movs r1, #20 - 8005fb0: 187b adds r3, r7, r1 - 8005fb2: 2280 movs r2, #128 ; 0x80 - 8005fb4: 0152 lsls r2, r2, #5 - 8005fb6: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8005fb8: 187b adds r3, r7, r1 - 8005fba: 2202 movs r2, #2 - 8005fbc: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8005fbe: 187b adds r3, r7, r1 - 8005fc0: 2200 movs r2, #0 - 8005fc2: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8005fc4: 187b adds r3, r7, r1 - 8005fc6: 2200 movs r2, #0 - 8005fc8: 60da str r2, [r3, #12] - GPIO_InitStruct.Alternate = GPIO_AF2_TIM14; - 8005fca: 187b adds r3, r7, r1 - 8005fcc: 2202 movs r2, #2 - 8005fce: 611a str r2, [r3, #16] - HAL_GPIO_Init(FAN_PWM_GPIO_Port, &GPIO_InitStruct); - 8005fd0: 187b adds r3, r7, r1 - 8005fd2: 4a1b ldr r2, [pc, #108] ; (8006040 ) - 8005fd4: 0019 movs r1, r3 - 8005fd6: 0010 movs r0, r2 - 8005fd8: f001 fac4 bl 8007564 -} - 8005fdc: e026 b.n 800602c - else if(timHandle->Instance==TIM15) - 8005fde: 687b ldr r3, [r7, #4] - 8005fe0: 681b ldr r3, [r3, #0] - 8005fe2: 4a18 ldr r2, [pc, #96] ; (8006044 ) - 8005fe4: 4293 cmp r3, r2 - 8005fe6: d121 bne.n 800602c - __HAL_RCC_GPIOC_CLK_ENABLE(); - 8005fe8: 4b13 ldr r3, [pc, #76] ; (8006038 ) - 8005fea: 6b5a ldr r2, [r3, #52] ; 0x34 - 8005fec: 4b12 ldr r3, [pc, #72] ; (8006038 ) - 8005fee: 2104 movs r1, #4 - 8005ff0: 430a orrs r2, r1 - 8005ff2: 635a str r2, [r3, #52] ; 0x34 - 8005ff4: 4b10 ldr r3, [pc, #64] ; (8006038 ) - 8005ff6: 6b5b ldr r3, [r3, #52] ; 0x34 - 8005ff8: 2204 movs r2, #4 - 8005ffa: 4013 ands r3, r2 - 8005ffc: 60bb str r3, [r7, #8] - 8005ffe: 68bb ldr r3, [r7, #8] - GPIO_InitStruct.Pin = LCD_LED_Pin; - 8006000: 2114 movs r1, #20 - 8006002: 187b adds r3, r7, r1 - 8006004: 2202 movs r2, #2 - 8006006: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8006008: 187b adds r3, r7, r1 - 800600a: 2202 movs r2, #2 - 800600c: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 800600e: 187b adds r3, r7, r1 - 8006010: 2200 movs r2, #0 - 8006012: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8006014: 187b adds r3, r7, r1 - 8006016: 2200 movs r2, #0 - 8006018: 60da str r2, [r3, #12] - GPIO_InitStruct.Alternate = GPIO_AF2_TIM15; - 800601a: 187b adds r3, r7, r1 - 800601c: 2202 movs r2, #2 - 800601e: 611a str r2, [r3, #16] - HAL_GPIO_Init(LCD_LED_GPIO_Port, &GPIO_InitStruct); - 8006020: 187b adds r3, r7, r1 - 8006022: 4a07 ldr r2, [pc, #28] ; (8006040 ) - 8006024: 0019 movs r1, r3 - 8006026: 0010 movs r0, r2 - 8006028: f001 fa9c bl 8007564 -} - 800602c: 46c0 nop ; (mov r8, r8) - 800602e: 46bd mov sp, r7 - 8006030: b00b add sp, #44 ; 0x2c - 8006032: bd90 pop {r4, r7, pc} - 8006034: 40012c00 .word 0x40012c00 - 8006038: 40021000 .word 0x40021000 - 800603c: 40002000 .word 0x40002000 - 8006040: 50000800 .word 0x50000800 - 8006044: 40014000 .word 0x40014000 - -08006048 : -UART_HandleTypeDef huart1; - -/* USART1 init function */ - -void MX_USART1_UART_Init(void) -{ - 8006048: b580 push {r7, lr} - 800604a: af00 add r7, sp, #0 - /* USER CODE END USART1_Init 0 */ - - /* USER CODE BEGIN USART1_Init 1 */ - - /* USER CODE END USART1_Init 1 */ - huart1.Instance = USART1; - 800604c: 4b23 ldr r3, [pc, #140] ; (80060dc ) - 800604e: 4a24 ldr r2, [pc, #144] ; (80060e0 ) - 8006050: 601a str r2, [r3, #0] - huart1.Init.BaudRate = 115200; - 8006052: 4b22 ldr r3, [pc, #136] ; (80060dc ) - 8006054: 22e1 movs r2, #225 ; 0xe1 - 8006056: 0252 lsls r2, r2, #9 - 8006058: 605a str r2, [r3, #4] - huart1.Init.WordLength = UART_WORDLENGTH_8B; - 800605a: 4b20 ldr r3, [pc, #128] ; (80060dc ) - 800605c: 2200 movs r2, #0 - 800605e: 609a str r2, [r3, #8] - huart1.Init.StopBits = UART_STOPBITS_1; - 8006060: 4b1e ldr r3, [pc, #120] ; (80060dc ) - 8006062: 2200 movs r2, #0 - 8006064: 60da str r2, [r3, #12] - huart1.Init.Parity = UART_PARITY_NONE; - 8006066: 4b1d ldr r3, [pc, #116] ; (80060dc ) - 8006068: 2200 movs r2, #0 - 800606a: 611a str r2, [r3, #16] - huart1.Init.Mode = UART_MODE_TX_RX; - 800606c: 4b1b ldr r3, [pc, #108] ; (80060dc ) - 800606e: 220c movs r2, #12 - 8006070: 615a str r2, [r3, #20] - huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 8006072: 4b1a ldr r3, [pc, #104] ; (80060dc ) - 8006074: 2200 movs r2, #0 - 8006076: 619a str r2, [r3, #24] - huart1.Init.OverSampling = UART_OVERSAMPLING_16; - 8006078: 4b18 ldr r3, [pc, #96] ; (80060dc ) - 800607a: 2200 movs r2, #0 - 800607c: 61da str r2, [r3, #28] - huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 800607e: 4b17 ldr r3, [pc, #92] ; (80060dc ) - 8006080: 2200 movs r2, #0 - 8006082: 621a str r2, [r3, #32] - huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 8006084: 4b15 ldr r3, [pc, #84] ; (80060dc ) - 8006086: 2200 movs r2, #0 - 8006088: 625a str r2, [r3, #36] ; 0x24 - huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; - 800608a: 4b14 ldr r3, [pc, #80] ; (80060dc ) - 800608c: 2200 movs r2, #0 - 800608e: 629a str r2, [r3, #40] ; 0x28 - if (HAL_UART_Init(&huart1) != HAL_OK) - 8006090: 4b12 ldr r3, [pc, #72] ; (80060dc ) - 8006092: 0018 movs r0, r3 - 8006094: f004 fe32 bl 800acfc - 8006098: 1e03 subs r3, r0, #0 - 800609a: d001 beq.n 80060a0 - { - Error_Handler(); - 800609c: f7fd fb70 bl 8003780 - } - if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 80060a0: 4b0e ldr r3, [pc, #56] ; (80060dc ) - 80060a2: 2100 movs r1, #0 - 80060a4: 0018 movs r0, r3 - 80060a6: f005 fa27 bl 800b4f8 - 80060aa: 1e03 subs r3, r0, #0 - 80060ac: d001 beq.n 80060b2 - { - Error_Handler(); - 80060ae: f7fd fb67 bl 8003780 - } - if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 80060b2: 4b0a ldr r3, [pc, #40] ; (80060dc ) - 80060b4: 2100 movs r1, #0 - 80060b6: 0018 movs r0, r3 - 80060b8: f005 fa5e bl 800b578 - 80060bc: 1e03 subs r3, r0, #0 - 80060be: d001 beq.n 80060c4 - { - Error_Handler(); - 80060c0: f7fd fb5e bl 8003780 - } - if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) - 80060c4: 4b05 ldr r3, [pc, #20] ; (80060dc ) - 80060c6: 0018 movs r0, r3 - 80060c8: f005 f9dc bl 800b484 - 80060cc: 1e03 subs r3, r0, #0 - 80060ce: d001 beq.n 80060d4 - { - Error_Handler(); - 80060d0: f7fd fb56 bl 8003780 - } - /* USER CODE BEGIN USART1_Init 2 */ - - /* USER CODE END USART1_Init 2 */ - -} - 80060d4: 46c0 nop ; (mov r8, r8) - 80060d6: 46bd mov sp, r7 - 80060d8: bd80 pop {r7, pc} - 80060da: 46c0 nop ; (mov r8, r8) - 80060dc: 20000390 .word 0x20000390 - 80060e0: 40013800 .word 0x40013800 - -080060e4 : - -void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) -{ - 80060e4: b590 push {r4, r7, lr} - 80060e6: b091 sub sp, #68 ; 0x44 - 80060e8: af00 add r7, sp, #0 - 80060ea: 6078 str r0, [r7, #4] - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80060ec: 232c movs r3, #44 ; 0x2c - 80060ee: 18fb adds r3, r7, r3 - 80060f0: 0018 movs r0, r3 - 80060f2: 2314 movs r3, #20 - 80060f4: 001a movs r2, r3 - 80060f6: 2100 movs r1, #0 - 80060f8: f008 fd89 bl 800ec0e - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 80060fc: 2410 movs r4, #16 - 80060fe: 193b adds r3, r7, r4 - 8006100: 0018 movs r0, r3 - 8006102: 231c movs r3, #28 - 8006104: 001a movs r2, r3 - 8006106: 2100 movs r1, #0 - 8006108: f008 fd81 bl 800ec0e - if(uartHandle->Instance==USART1) - 800610c: 687b ldr r3, [r7, #4] - 800610e: 681b ldr r3, [r3, #0] - 8006110: 4a22 ldr r2, [pc, #136] ; (800619c ) - 8006112: 4293 cmp r3, r2 - 8006114: d13d bne.n 8006192 - - /* USER CODE END USART1_MspInit 0 */ - - /** Initializes the peripherals clocks - */ - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; - 8006116: 193b adds r3, r7, r4 - 8006118: 2201 movs r2, #1 - 800611a: 601a str r2, [r3, #0] - PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1; - 800611c: 193b adds r3, r7, r4 - 800611e: 2200 movs r2, #0 - 8006120: 605a str r2, [r3, #4] - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 8006122: 193b adds r3, r7, r4 - 8006124: 0018 movs r0, r3 - 8006126: f002 f8cd bl 80082c4 - 800612a: 1e03 subs r3, r0, #0 - 800612c: d001 beq.n 8006132 - { - Error_Handler(); - 800612e: f7fd fb27 bl 8003780 - } - - /* USART1 clock enable */ - __HAL_RCC_USART1_CLK_ENABLE(); - 8006132: 4b1b ldr r3, [pc, #108] ; (80061a0 ) - 8006134: 6c1a ldr r2, [r3, #64] ; 0x40 - 8006136: 4b1a ldr r3, [pc, #104] ; (80061a0 ) - 8006138: 2180 movs r1, #128 ; 0x80 - 800613a: 01c9 lsls r1, r1, #7 - 800613c: 430a orrs r2, r1 - 800613e: 641a str r2, [r3, #64] ; 0x40 - 8006140: 4b17 ldr r3, [pc, #92] ; (80061a0 ) - 8006142: 6c1a ldr r2, [r3, #64] ; 0x40 - 8006144: 2380 movs r3, #128 ; 0x80 - 8006146: 01db lsls r3, r3, #7 - 8006148: 4013 ands r3, r2 - 800614a: 60fb str r3, [r7, #12] - 800614c: 68fb ldr r3, [r7, #12] - - __HAL_RCC_GPIOB_CLK_ENABLE(); - 800614e: 4b14 ldr r3, [pc, #80] ; (80061a0 ) - 8006150: 6b5a ldr r2, [r3, #52] ; 0x34 - 8006152: 4b13 ldr r3, [pc, #76] ; (80061a0 ) - 8006154: 2102 movs r1, #2 - 8006156: 430a orrs r2, r1 - 8006158: 635a str r2, [r3, #52] ; 0x34 - 800615a: 4b11 ldr r3, [pc, #68] ; (80061a0 ) - 800615c: 6b5b ldr r3, [r3, #52] ; 0x34 - 800615e: 2202 movs r2, #2 - 8006160: 4013 ands r3, r2 - 8006162: 60bb str r3, [r7, #8] - 8006164: 68bb ldr r3, [r7, #8] - /**USART1 GPIO Configuration - PB6 ------> USART1_TX - PB7 ------> USART1_RX - */ - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; - 8006166: 212c movs r1, #44 ; 0x2c - 8006168: 187b adds r3, r7, r1 - 800616a: 22c0 movs r2, #192 ; 0xc0 - 800616c: 601a str r2, [r3, #0] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 800616e: 187b adds r3, r7, r1 - 8006170: 2202 movs r2, #2 - 8006172: 605a str r2, [r3, #4] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8006174: 187b adds r3, r7, r1 - 8006176: 2200 movs r2, #0 - 8006178: 609a str r2, [r3, #8] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800617a: 187b adds r3, r7, r1 - 800617c: 2200 movs r2, #0 - 800617e: 60da str r2, [r3, #12] - GPIO_InitStruct.Alternate = GPIO_AF0_USART1; - 8006180: 187b adds r3, r7, r1 - 8006182: 2200 movs r2, #0 - 8006184: 611a str r2, [r3, #16] - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8006186: 187b adds r3, r7, r1 - 8006188: 4a06 ldr r2, [pc, #24] ; (80061a4 ) - 800618a: 0019 movs r1, r3 - 800618c: 0010 movs r0, r2 - 800618e: f001 f9e9 bl 8007564 - - /* USER CODE BEGIN USART1_MspInit 1 */ - - /* USER CODE END USART1_MspInit 1 */ - } -} - 8006192: 46c0 nop ; (mov r8, r8) - 8006194: 46bd mov sp, r7 - 8006196: b011 add sp, #68 ; 0x44 - 8006198: bd90 pop {r4, r7, pc} - 800619a: 46c0 nop ; (mov r8, r8) - 800619c: 40013800 .word 0x40013800 - 80061a0: 40021000 .word 0x40021000 - 80061a4: 50000400 .word 0x50000400 - -080061a8 : - - .section .text.Reset_Handler - .weak Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - ldr r0, =_estack - 80061a8: 480d ldr r0, [pc, #52] ; (80061e0 ) - mov sp, r0 /* set stack pointer */ - 80061aa: 4685 mov sp, r0 - -/* Call the clock system initialization function.*/ - bl SystemInit - 80061ac: f7ff fbb8 bl 8005920 - -/* Copy the data segment initializers from flash to SRAM */ - ldr r0, =_sdata - 80061b0: 480c ldr r0, [pc, #48] ; (80061e4 ) - ldr r1, =_edata - 80061b2: 490d ldr r1, [pc, #52] ; (80061e8 ) - ldr r2, =_sidata - 80061b4: 4a0d ldr r2, [pc, #52] ; (80061ec ) - movs r3, #0 - 80061b6: 2300 movs r3, #0 - b LoopCopyDataInit - 80061b8: e002 b.n 80061c0 - -080061ba : - -CopyDataInit: - ldr r4, [r2, r3] - 80061ba: 58d4 ldr r4, [r2, r3] - str r4, [r0, r3] - 80061bc: 50c4 str r4, [r0, r3] - adds r3, r3, #4 - 80061be: 3304 adds r3, #4 - -080061c0 : - -LoopCopyDataInit: - adds r4, r0, r3 - 80061c0: 18c4 adds r4, r0, r3 - cmp r4, r1 - 80061c2: 428c cmp r4, r1 - bcc CopyDataInit - 80061c4: d3f9 bcc.n 80061ba - -/* Zero fill the bss segment. */ - ldr r2, =_sbss - 80061c6: 4a0a ldr r2, [pc, #40] ; (80061f0 ) - ldr r4, =_ebss - 80061c8: 4c0a ldr r4, [pc, #40] ; (80061f4 ) - movs r3, #0 - 80061ca: 2300 movs r3, #0 - b LoopFillZerobss - 80061cc: e001 b.n 80061d2 - -080061ce : - -FillZerobss: - str r3, [r2] - 80061ce: 6013 str r3, [r2, #0] - adds r2, r2, #4 - 80061d0: 3204 adds r2, #4 - -080061d2 : - -LoopFillZerobss: - cmp r2, r4 - 80061d2: 42a2 cmp r2, r4 - bcc FillZerobss - 80061d4: d3fb bcc.n 80061ce - -/* Call static constructors */ - bl __libc_init_array - 80061d6: f008 fceb bl 800ebb0 <__libc_init_array> -/* Call the application s entry point.*/ - bl main - 80061da: f7fd fa09 bl 80035f0
- -080061de : - -LoopForever: - b LoopForever - 80061de: e7fe b.n 80061de - ldr r0, =_estack - 80061e0: 20009000 .word 0x20009000 - ldr r0, =_sdata - 80061e4: 20000000 .word 0x20000000 - ldr r1, =_edata - 80061e8: 200000b4 .word 0x200000b4 - ldr r2, =_sidata - 80061ec: 08011020 .word 0x08011020 - ldr r2, =_sbss - 80061f0: 200000b4 .word 0x200000b4 - ldr r4, =_ebss - 80061f4: 20002a40 .word 0x20002a40 - -080061f8 : - * @retval None -*/ - .section .text.Default_Handler,"ax",%progbits -Default_Handler: -Infinite_Loop: - b Infinite_Loop - 80061f8: e7fe b.n 80061f8 - ... - -080061fc : - * each 1ms in the SysTick_Handler() interrupt handler. - * - * @retval HAL status - */ -HAL_StatusTypeDef HAL_Init(void) -{ - 80061fc: b580 push {r7, lr} - 80061fe: b082 sub sp, #8 - 8006200: af00 add r7, sp, #0 - HAL_StatusTypeDef status = HAL_OK; - 8006202: 1dfb adds r3, r7, #7 - 8006204: 2200 movs r2, #0 - 8006206: 701a strb r2, [r3, #0] -#if (INSTRUCTION_CACHE_ENABLE == 0U) - __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); -#endif /* INSTRUCTION_CACHE_ENABLE */ - -#if (PREFETCH_ENABLE != 0U) - __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8006208: 4b0b ldr r3, [pc, #44] ; (8006238 ) - 800620a: 681a ldr r2, [r3, #0] - 800620c: 4b0a ldr r3, [pc, #40] ; (8006238 ) - 800620e: 2180 movs r1, #128 ; 0x80 - 8006210: 0049 lsls r1, r1, #1 - 8006212: 430a orrs r2, r1 - 8006214: 601a str r2, [r3, #0] -#endif /* PREFETCH_ENABLE */ - - /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is HSI) */ - if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) - 8006216: 2003 movs r0, #3 - 8006218: f7ff faaa bl 8005770 - 800621c: 1e03 subs r3, r0, #0 - 800621e: d003 beq.n 8006228 - { - status = HAL_ERROR; - 8006220: 1dfb adds r3, r7, #7 - 8006222: 2201 movs r2, #1 - 8006224: 701a strb r2, [r3, #0] - 8006226: e001 b.n 800622c - } - else - { - /* Init the low level hardware */ - HAL_MspInit(); - 8006228: f7ff fa72 bl 8005710 - } - - /* Return function status */ - return status; - 800622c: 1dfb adds r3, r7, #7 - 800622e: 781b ldrb r3, [r3, #0] -} - 8006230: 0018 movs r0, r3 - 8006232: 46bd mov sp, r7 - 8006234: b002 add sp, #8 - 8006236: bd80 pop {r7, pc} - 8006238: 40022000 .word 0x40022000 - -0800623c : - * @note This function is declared as __weak to be overwritten in case of other - * implementations in user file. - * @retval None - */ -__weak void HAL_IncTick(void) -{ - 800623c: b580 push {r7, lr} - 800623e: af00 add r7, sp, #0 - uwTick += (uint32_t)uwTickFreq; - 8006240: 4b05 ldr r3, [pc, #20] ; (8006258 ) - 8006242: 781b ldrb r3, [r3, #0] - 8006244: 001a movs r2, r3 - 8006246: 4b05 ldr r3, [pc, #20] ; (800625c ) - 8006248: 681b ldr r3, [r3, #0] - 800624a: 18d2 adds r2, r2, r3 - 800624c: 4b03 ldr r3, [pc, #12] ; (800625c ) - 800624e: 601a str r2, [r3, #0] -} - 8006250: 46c0 nop ; (mov r8, r8) - 8006252: 46bd mov sp, r7 - 8006254: bd80 pop {r7, pc} - 8006256: 46c0 nop ; (mov r8, r8) - 8006258: 20000048 .word 0x20000048 - 800625c: 20000424 .word 0x20000424 - -08006260 : - * @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) -{ - 8006260: b580 push {r7, lr} - 8006262: af00 add r7, sp, #0 - return uwTick; - 8006264: 4b02 ldr r3, [pc, #8] ; (8006270 ) - 8006266: 681b ldr r3, [r3, #0] -} - 8006268: 0018 movs r0, r3 - 800626a: 46bd mov sp, r7 - 800626c: bd80 pop {r7, pc} - 800626e: 46c0 nop ; (mov r8, r8) - 8006270: 20000424 .word 0x20000424 - -08006274 : - * implementations in user file. - * @param Delay specifies the delay time length, in milliseconds. - * @retval None - */ -__weak void HAL_Delay(uint32_t Delay) -{ - 8006274: b580 push {r7, lr} - 8006276: b084 sub sp, #16 - 8006278: af00 add r7, sp, #0 - 800627a: 6078 str r0, [r7, #4] - uint32_t tickstart = HAL_GetTick(); - 800627c: f7ff fff0 bl 8006260 - 8006280: 0003 movs r3, r0 - 8006282: 60bb str r3, [r7, #8] - uint32_t wait = Delay; - 8006284: 687b ldr r3, [r7, #4] - 8006286: 60fb str r3, [r7, #12] - - /* Add a freq to guarantee minimum wait */ - if (wait < HAL_MAX_DELAY) - 8006288: 68fb ldr r3, [r7, #12] - 800628a: 3301 adds r3, #1 - 800628c: d005 beq.n 800629a - { - wait += (uint32_t)(uwTickFreq); - 800628e: 4b0a ldr r3, [pc, #40] ; (80062b8 ) - 8006290: 781b ldrb r3, [r3, #0] - 8006292: 001a movs r2, r3 - 8006294: 68fb ldr r3, [r7, #12] - 8006296: 189b adds r3, r3, r2 - 8006298: 60fb str r3, [r7, #12] - } - - while ((HAL_GetTick() - tickstart) < wait) - 800629a: 46c0 nop ; (mov r8, r8) - 800629c: f7ff ffe0 bl 8006260 - 80062a0: 0002 movs r2, r0 - 80062a2: 68bb ldr r3, [r7, #8] - 80062a4: 1ad3 subs r3, r2, r3 - 80062a6: 68fa ldr r2, [r7, #12] - 80062a8: 429a cmp r2, r3 - 80062aa: d8f7 bhi.n 800629c - { - } -} - 80062ac: 46c0 nop ; (mov r8, r8) - 80062ae: 46c0 nop ; (mov r8, r8) - 80062b0: 46bd mov sp, r7 - 80062b2: b004 add sp, #16 - 80062b4: bd80 pop {r7, pc} - 80062b6: 46c0 nop ; (mov r8, r8) - 80062b8: 20000048 .word 0x20000048 - -080062bc : - * @arg @ref SYSCFG_UCPD1_STROBE - * @arg @ref SYSCFG_UCPD2_STROBE - * @retval None - */ -void HAL_SYSCFG_StrobeDBattpinsConfig(uint32_t ConfigDeadBattery) -{ - 80062bc: b580 push {r7, lr} - 80062be: b082 sub sp, #8 - 80062c0: af00 add r7, sp, #0 - 80062c2: 6078 str r0, [r7, #4] - assert_param(IS_SYSCFG_DBATT_CONFIG(ConfigDeadBattery)); - - /* Change strobe configuration of GPIO depending on UCPDx dead battery settings */ - MODIFY_REG(SYSCFG->CFGR1, (SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE), ConfigDeadBattery); - 80062c4: 4b06 ldr r3, [pc, #24] ; (80062e0 ) - 80062c6: 681b ldr r3, [r3, #0] - 80062c8: 4a06 ldr r2, [pc, #24] ; (80062e4 ) - 80062ca: 4013 ands r3, r2 - 80062cc: 0019 movs r1, r3 - 80062ce: 4b04 ldr r3, [pc, #16] ; (80062e0 ) - 80062d0: 687a ldr r2, [r7, #4] - 80062d2: 430a orrs r2, r1 - 80062d4: 601a str r2, [r3, #0] -} - 80062d6: 46c0 nop ; (mov r8, r8) - 80062d8: 46bd mov sp, r7 - 80062da: b002 add sp, #8 - 80062dc: bd80 pop {r7, pc} - 80062de: 46c0 nop ; (mov r8, r8) - 80062e0: 40010000 .word 0x40010000 - 80062e4: fffff9ff .word 0xfffff9ff - -080062e8 : - * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR - * @arg @ref LL_ADC_PATH_INTERNAL_VBAT - * @retval None - */ -__STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal) -{ - 80062e8: b580 push {r7, lr} - 80062ea: b082 sub sp, #8 - 80062ec: af00 add r7, sp, #0 - 80062ee: 6078 str r0, [r7, #4] - 80062f0: 6039 str r1, [r7, #0] - MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal); - 80062f2: 687b ldr r3, [r7, #4] - 80062f4: 681b ldr r3, [r3, #0] - 80062f6: 4a05 ldr r2, [pc, #20] ; (800630c ) - 80062f8: 401a ands r2, r3 - 80062fa: 683b ldr r3, [r7, #0] - 80062fc: 431a orrs r2, r3 - 80062fe: 687b ldr r3, [r7, #4] - 8006300: 601a str r2, [r3, #0] -} - 8006302: 46c0 nop ; (mov r8, r8) - 8006304: 46bd mov sp, r7 - 8006306: b002 add sp, #8 - 8006308: bd80 pop {r7, pc} - 800630a: 46c0 nop ; (mov r8, r8) - 800630c: fe3fffff .word 0xfe3fffff - -08006310 : - * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT - * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR - * @arg @ref LL_ADC_PATH_INTERNAL_VBAT - */ -__STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON) -{ - 8006310: b580 push {r7, lr} - 8006312: b082 sub sp, #8 - 8006314: af00 add r7, sp, #0 - 8006316: 6078 str r0, [r7, #4] - return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN)); - 8006318: 687b ldr r3, [r7, #4] - 800631a: 681a ldr r2, [r3, #0] - 800631c: 23e0 movs r3, #224 ; 0xe0 - 800631e: 045b lsls r3, r3, #17 - 8006320: 4013 ands r3, r2 -} - 8006322: 0018 movs r0, r3 - 8006324: 46bd mov sp, r7 - 8006326: b002 add sp, #8 - 8006328: bd80 pop {r7, pc} - -0800632a : - * @arg @ref LL_ADC_SAMPLINGTIME_160CYCLES_5 - * @retval None - */ -__STATIC_INLINE void LL_ADC_SetSamplingTimeCommonChannels(ADC_TypeDef *ADCx, uint32_t SamplingTimeY, - uint32_t SamplingTime) -{ - 800632a: b580 push {r7, lr} - 800632c: b084 sub sp, #16 - 800632e: af00 add r7, sp, #0 - 8006330: 60f8 str r0, [r7, #12] - 8006332: 60b9 str r1, [r7, #8] - 8006334: 607a str r2, [r7, #4] - MODIFY_REG(ADCx->SMPR, - 8006336: 68fb ldr r3, [r7, #12] - 8006338: 695b ldr r3, [r3, #20] - 800633a: 68ba ldr r2, [r7, #8] - 800633c: 2104 movs r1, #4 - 800633e: 400a ands r2, r1 - 8006340: 2107 movs r1, #7 - 8006342: 4091 lsls r1, r2 - 8006344: 000a movs r2, r1 - 8006346: 43d2 mvns r2, r2 - 8006348: 401a ands r2, r3 - 800634a: 68bb ldr r3, [r7, #8] - 800634c: 2104 movs r1, #4 - 800634e: 400b ands r3, r1 - 8006350: 6879 ldr r1, [r7, #4] - 8006352: 4099 lsls r1, r3 - 8006354: 000b movs r3, r1 - 8006356: 431a orrs r2, r3 - 8006358: 68fb ldr r3, [r7, #12] - 800635a: 615a str r2, [r3, #20] - ADC_SMPR_SMP1 << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK), - SamplingTime << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK)); -} - 800635c: 46c0 nop ; (mov r8, r8) - 800635e: 46bd mov sp, r7 - 8006360: b004 add sp, #16 - 8006362: bd80 pop {r7, pc} - -08006364 : - * @arg @ref LL_ADC_SAMPLINGTIME_39CYCLES_5 - * @arg @ref LL_ADC_SAMPLINGTIME_79CYCLES_5 - * @arg @ref LL_ADC_SAMPLINGTIME_160CYCLES_5 - */ -__STATIC_INLINE uint32_t LL_ADC_GetSamplingTimeCommonChannels(ADC_TypeDef *ADCx, uint32_t SamplingTimeY) -{ - 8006364: b580 push {r7, lr} - 8006366: b082 sub sp, #8 - 8006368: af00 add r7, sp, #0 - 800636a: 6078 str r0, [r7, #4] - 800636c: 6039 str r1, [r7, #0] - return (uint32_t)((READ_BIT(ADCx->SMPR, ADC_SMPR_SMP1 << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK))) - 800636e: 687b ldr r3, [r7, #4] - 8006370: 695b ldr r3, [r3, #20] - 8006372: 683a ldr r2, [r7, #0] - 8006374: 2104 movs r1, #4 - 8006376: 400a ands r2, r1 - 8006378: 2107 movs r1, #7 - 800637a: 4091 lsls r1, r2 - 800637c: 000a movs r2, r1 - 800637e: 401a ands r2, r3 - >> (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK)); - 8006380: 683b ldr r3, [r7, #0] - 8006382: 2104 movs r1, #4 - 8006384: 400b ands r3, r1 - return (uint32_t)((READ_BIT(ADCx->SMPR, ADC_SMPR_SMP1 << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK))) - 8006386: 40da lsrs r2, r3 - 8006388: 0013 movs r3, r2 -} - 800638a: 0018 movs r0, r3 - 800638c: 46bd mov sp, r7 - 800638e: b002 add sp, #8 - 8006390: bd80 pop {r7, pc} - -08006392 : - * @param ADCx ADC instance - * @retval Value "0" if trigger source external trigger - * Value "1" if trigger source SW start. - */ -__STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx) -{ - 8006392: b580 push {r7, lr} - 8006394: b082 sub sp, #8 - 8006396: af00 add r7, sp, #0 - 8006398: 6078 str r0, [r7, #4] - return ((READ_BIT(ADCx->CFGR1, ADC_CFGR1_EXTEN) == (LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR1_EXTEN)) ? 1UL : 0UL); - 800639a: 687b ldr r3, [r7, #4] - 800639c: 68da ldr r2, [r3, #12] - 800639e: 23c0 movs r3, #192 ; 0xc0 - 80063a0: 011b lsls r3, r3, #4 - 80063a2: 4013 ands r3, r2 - 80063a4: d101 bne.n 80063aa - 80063a6: 2301 movs r3, #1 - 80063a8: e000 b.n 80063ac - 80063aa: 2300 movs r3, #0 -} - 80063ac: 0018 movs r0, r3 - 80063ae: 46bd mov sp, r7 - 80063b0: b002 add sp, #8 - 80063b2: bd80 pop {r7, pc} - -080063b4 : - * only if sequencer is set in mode "not fully configurable", - * refer to function @ref LL_ADC_REG_SetSequencerConfigurable(). - * @retval None - */ -__STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel) -{ - 80063b4: b580 push {r7, lr} - 80063b6: b084 sub sp, #16 - 80063b8: af00 add r7, sp, #0 - 80063ba: 60f8 str r0, [r7, #12] - 80063bc: 60b9 str r1, [r7, #8] - 80063be: 607a str r2, [r7, #4] - /* Set bits with content of parameter "Channel" with bits position */ - /* in register depending on parameter "Rank". */ - /* Parameters "Rank" and "Channel" are used with masks because containing */ - /* other bits reserved for other purpose. */ - MODIFY_REG(ADCx->CHSELR, - 80063c0: 68fb ldr r3, [r7, #12] - 80063c2: 6a9b ldr r3, [r3, #40] ; 0x28 - 80063c4: 68ba ldr r2, [r7, #8] - 80063c6: 211f movs r1, #31 - 80063c8: 400a ands r2, r1 - 80063ca: 210f movs r1, #15 - 80063cc: 4091 lsls r1, r2 - 80063ce: 000a movs r2, r1 - 80063d0: 43d2 mvns r2, r2 - 80063d2: 401a ands r2, r3 - 80063d4: 687b ldr r3, [r7, #4] - 80063d6: 0e9b lsrs r3, r3, #26 - 80063d8: 210f movs r1, #15 - 80063da: 4019 ands r1, r3 - 80063dc: 68bb ldr r3, [r7, #8] - 80063de: 201f movs r0, #31 - 80063e0: 4003 ands r3, r0 - 80063e2: 4099 lsls r1, r3 - 80063e4: 000b movs r3, r1 - 80063e6: 431a orrs r2, r3 - 80063e8: 68fb ldr r3, [r7, #12] - 80063ea: 629a str r2, [r3, #40] ; 0x28 - ADC_CHSELR_SQ1 << (Rank & ADC_REG_RANK_ID_SQRX_MASK), - ((Channel & ADC_CHANNEL_ID_NUMBER_MASK_SEQ) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) - << (Rank & ADC_REG_RANK_ID_SQRX_MASK)); -} - 80063ec: 46c0 nop ; (mov r8, r8) - 80063ee: 46bd mov sp, r7 - 80063f0: b004 add sp, #16 - 80063f2: bd80 pop {r7, pc} - -080063f4 : - * only if sequencer is set in mode "not fully configurable", - * refer to function @ref LL_ADC_REG_SetSequencerConfigurable(). - * @retval None - */ -__STATIC_INLINE void LL_ADC_REG_SetSequencerChAdd(ADC_TypeDef *ADCx, uint32_t Channel) -{ - 80063f4: b580 push {r7, lr} - 80063f6: b082 sub sp, #8 - 80063f8: af00 add r7, sp, #0 - 80063fa: 6078 str r0, [r7, #4] - 80063fc: 6039 str r1, [r7, #0] - /* Parameter "Channel" is used with masks because containing */ - /* other bits reserved for other purpose. */ - SET_BIT(ADCx->CHSELR, (Channel & ADC_CHANNEL_ID_BITFIELD_MASK)); - 80063fe: 687b ldr r3, [r7, #4] - 8006400: 6a9a ldr r2, [r3, #40] ; 0x28 - 8006402: 683b ldr r3, [r7, #0] - 8006404: 035b lsls r3, r3, #13 - 8006406: 0b5b lsrs r3, r3, #13 - 8006408: 431a orrs r2, r3 - 800640a: 687b ldr r3, [r7, #4] - 800640c: 629a str r2, [r3, #40] ; 0x28 -} - 800640e: 46c0 nop ; (mov r8, r8) - 8006410: 46bd mov sp, r7 - 8006412: b002 add sp, #8 - 8006414: bd80 pop {r7, pc} - -08006416 : - * only if sequencer is set in mode "not fully configurable", - * refer to function @ref LL_ADC_REG_SetSequencerConfigurable(). - * @retval None - */ -__STATIC_INLINE void LL_ADC_REG_SetSequencerChRem(ADC_TypeDef *ADCx, uint32_t Channel) -{ - 8006416: b580 push {r7, lr} - 8006418: b082 sub sp, #8 - 800641a: af00 add r7, sp, #0 - 800641c: 6078 str r0, [r7, #4] - 800641e: 6039 str r1, [r7, #0] - /* Parameter "Channel" is used with masks because containing */ - /* other bits reserved for other purpose. */ - CLEAR_BIT(ADCx->CHSELR, (Channel & ADC_CHANNEL_ID_BITFIELD_MASK)); - 8006420: 687b ldr r3, [r7, #4] - 8006422: 6a9b ldr r3, [r3, #40] ; 0x28 - 8006424: 683a ldr r2, [r7, #0] - 8006426: 0352 lsls r2, r2, #13 - 8006428: 0b52 lsrs r2, r2, #13 - 800642a: 43d2 mvns r2, r2 - 800642c: 401a ands r2, r3 - 800642e: 687b ldr r3, [r7, #4] - 8006430: 629a str r2, [r3, #40] ; 0x28 -} - 8006432: 46c0 nop ; (mov r8, r8) - 8006434: 46bd mov sp, r7 - 8006436: b002 add sp, #8 - 8006438: bd80 pop {r7, pc} - ... - -0800643c : - * @arg @ref LL_ADC_SAMPLINGTIME_COMMON_1 - * @arg @ref LL_ADC_SAMPLINGTIME_COMMON_2 - * @retval None - */ -__STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTimeY) -{ - 800643c: b580 push {r7, lr} - 800643e: b084 sub sp, #16 - 8006440: af00 add r7, sp, #0 - 8006442: 60f8 str r0, [r7, #12] - 8006444: 60b9 str r1, [r7, #8] - 8006446: 607a str r2, [r7, #4] - /* Parameter "Channel" is used with masks because containing */ - /* other bits reserved for other purpose. */ - MODIFY_REG(ADCx->SMPR, - 8006448: 68fb ldr r3, [r7, #12] - 800644a: 695b ldr r3, [r3, #20] - 800644c: 68ba ldr r2, [r7, #8] - 800644e: 0212 lsls r2, r2, #8 - 8006450: 43d2 mvns r2, r2 - 8006452: 401a ands r2, r3 - 8006454: 68bb ldr r3, [r7, #8] - 8006456: 021b lsls r3, r3, #8 - 8006458: 6879 ldr r1, [r7, #4] - 800645a: 400b ands r3, r1 - 800645c: 4904 ldr r1, [pc, #16] ; (8006470 ) - 800645e: 400b ands r3, r1 - 8006460: 431a orrs r2, r3 - 8006462: 68fb ldr r3, [r7, #12] - 8006464: 615a str r2, [r3, #20] - (Channel << ADC_SMPR_SMPSEL0_BITOFFSET_POS), - (Channel << ADC_SMPR_SMPSEL0_BITOFFSET_POS) & (SamplingTimeY & ADC_SAMPLING_TIME_CH_MASK) - ); -} - 8006466: 46c0 nop ; (mov r8, r8) - 8006468: 46bd mov sp, r7 - 800646a: b004 add sp, #16 - 800646c: bd80 pop {r7, pc} - 800646e: 46c0 nop ; (mov r8, r8) - 8006470: 07ffff00 .word 0x07ffff00 - -08006474 : - * @rmtoll CR ADVREGEN LL_ADC_EnableInternalRegulator - * @param ADCx ADC instance - * @retval None - */ -__STATIC_INLINE void LL_ADC_EnableInternalRegulator(ADC_TypeDef *ADCx) -{ - 8006474: b580 push {r7, lr} - 8006476: b082 sub sp, #8 - 8006478: af00 add r7, sp, #0 - 800647a: 6078 str r0, [r7, #4] - /* Note: Write register with some additional bits forced to state reset */ - /* instead of modifying only the selected bit for this function, */ - /* to not interfere with bits with HW property "rs". */ - MODIFY_REG(ADCx->CR, - 800647c: 687b ldr r3, [r7, #4] - 800647e: 689b ldr r3, [r3, #8] - 8006480: 4a05 ldr r2, [pc, #20] ; (8006498 ) - 8006482: 4013 ands r3, r2 - 8006484: 2280 movs r2, #128 ; 0x80 - 8006486: 0552 lsls r2, r2, #21 - 8006488: 431a orrs r2, r3 - 800648a: 687b ldr r3, [r7, #4] - 800648c: 609a str r2, [r3, #8] - ADC_CR_BITS_PROPERTY_RS, - ADC_CR_ADVREGEN); -} - 800648e: 46c0 nop ; (mov r8, r8) - 8006490: 46bd mov sp, r7 - 8006492: b002 add sp, #8 - 8006494: bd80 pop {r7, pc} - 8006496: 46c0 nop ; (mov r8, r8) - 8006498: 6fffffe8 .word 0x6fffffe8 - -0800649c : - * @rmtoll CR ADVREGEN LL_ADC_IsInternalRegulatorEnabled - * @param ADCx ADC instance - * @retval 0: internal regulator is disabled, 1: internal regulator is enabled. - */ -__STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx) -{ - 800649c: b580 push {r7, lr} - 800649e: b082 sub sp, #8 - 80064a0: af00 add r7, sp, #0 - 80064a2: 6078 str r0, [r7, #4] - return ((READ_BIT(ADCx->CR, ADC_CR_ADVREGEN) == (ADC_CR_ADVREGEN)) ? 1UL : 0UL); - 80064a4: 687b ldr r3, [r7, #4] - 80064a6: 689a ldr r2, [r3, #8] - 80064a8: 2380 movs r3, #128 ; 0x80 - 80064aa: 055b lsls r3, r3, #21 - 80064ac: 401a ands r2, r3 - 80064ae: 2380 movs r3, #128 ; 0x80 - 80064b0: 055b lsls r3, r3, #21 - 80064b2: 429a cmp r2, r3 - 80064b4: d101 bne.n 80064ba - 80064b6: 2301 movs r3, #1 - 80064b8: e000 b.n 80064bc - 80064ba: 2300 movs r3, #0 -} - 80064bc: 0018 movs r0, r3 - 80064be: 46bd mov sp, r7 - 80064c0: b002 add sp, #8 - 80064c2: bd80 pop {r7, pc} - -080064c4 : - * @rmtoll CR ADEN LL_ADC_Enable - * @param ADCx ADC instance - * @retval None - */ -__STATIC_INLINE void LL_ADC_Enable(ADC_TypeDef *ADCx) -{ - 80064c4: b580 push {r7, lr} - 80064c6: b082 sub sp, #8 - 80064c8: af00 add r7, sp, #0 - 80064ca: 6078 str r0, [r7, #4] - /* Note: Write register with some additional bits forced to state reset */ - /* instead of modifying only the selected bit for this function, */ - /* to not interfere with bits with HW property "rs". */ - MODIFY_REG(ADCx->CR, - 80064cc: 687b ldr r3, [r7, #4] - 80064ce: 689b ldr r3, [r3, #8] - 80064d0: 4a04 ldr r2, [pc, #16] ; (80064e4 ) - 80064d2: 4013 ands r3, r2 - 80064d4: 2201 movs r2, #1 - 80064d6: 431a orrs r2, r3 - 80064d8: 687b ldr r3, [r7, #4] - 80064da: 609a str r2, [r3, #8] - ADC_CR_BITS_PROPERTY_RS, - ADC_CR_ADEN); -} - 80064dc: 46c0 nop ; (mov r8, r8) - 80064de: 46bd mov sp, r7 - 80064e0: b002 add sp, #8 - 80064e2: bd80 pop {r7, pc} - 80064e4: 7fffffe8 .word 0x7fffffe8 - -080064e8 : - * @rmtoll CR ADDIS LL_ADC_Disable - * @param ADCx ADC instance - * @retval None - */ -__STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx) -{ - 80064e8: b580 push {r7, lr} - 80064ea: b082 sub sp, #8 - 80064ec: af00 add r7, sp, #0 - 80064ee: 6078 str r0, [r7, #4] - /* Note: Write register with some additional bits forced to state reset */ - /* instead of modifying only the selected bit for this function, */ - /* to not interfere with bits with HW property "rs". */ - MODIFY_REG(ADCx->CR, - 80064f0: 687b ldr r3, [r7, #4] - 80064f2: 689b ldr r3, [r3, #8] - 80064f4: 4a04 ldr r2, [pc, #16] ; (8006508 ) - 80064f6: 4013 ands r3, r2 - 80064f8: 2202 movs r2, #2 - 80064fa: 431a orrs r2, r3 - 80064fc: 687b ldr r3, [r7, #4] - 80064fe: 609a str r2, [r3, #8] - ADC_CR_BITS_PROPERTY_RS, - ADC_CR_ADDIS); -} - 8006500: 46c0 nop ; (mov r8, r8) - 8006502: 46bd mov sp, r7 - 8006504: b002 add sp, #8 - 8006506: bd80 pop {r7, pc} - 8006508: 7fffffe8 .word 0x7fffffe8 - -0800650c : - * @rmtoll CR ADEN LL_ADC_IsEnabled - * @param ADCx ADC instance - * @retval 0: ADC is disabled, 1: ADC is enabled. - */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx) -{ - 800650c: b580 push {r7, lr} - 800650e: b082 sub sp, #8 - 8006510: af00 add r7, sp, #0 - 8006512: 6078 str r0, [r7, #4] - return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); - 8006514: 687b ldr r3, [r7, #4] - 8006516: 689b ldr r3, [r3, #8] - 8006518: 2201 movs r2, #1 - 800651a: 4013 ands r3, r2 - 800651c: 2b01 cmp r3, #1 - 800651e: d101 bne.n 8006524 - 8006520: 2301 movs r3, #1 - 8006522: e000 b.n 8006526 - 8006524: 2300 movs r3, #0 -} - 8006526: 0018 movs r0, r3 - 8006528: 46bd mov sp, r7 - 800652a: b002 add sp, #8 - 800652c: bd80 pop {r7, pc} - -0800652e : - * @rmtoll CR ADDIS LL_ADC_IsDisableOngoing - * @param ADCx ADC instance - * @retval 0: no ADC disable command on going. - */ -__STATIC_INLINE uint32_t LL_ADC_IsDisableOngoing(ADC_TypeDef *ADCx) -{ - 800652e: b580 push {r7, lr} - 8006530: b082 sub sp, #8 - 8006532: af00 add r7, sp, #0 - 8006534: 6078 str r0, [r7, #4] - return ((READ_BIT(ADCx->CR, ADC_CR_ADDIS) == (ADC_CR_ADDIS)) ? 1UL : 0UL); - 8006536: 687b ldr r3, [r7, #4] - 8006538: 689b ldr r3, [r3, #8] - 800653a: 2202 movs r2, #2 - 800653c: 4013 ands r3, r2 - 800653e: 2b02 cmp r3, #2 - 8006540: d101 bne.n 8006546 - 8006542: 2301 movs r3, #1 - 8006544: e000 b.n 8006548 - 8006546: 2300 movs r3, #0 -} - 8006548: 0018 movs r0, r3 - 800654a: 46bd mov sp, r7 - 800654c: b002 add sp, #8 - 800654e: bd80 pop {r7, pc} - -08006550 : - * @rmtoll CR ADSTART LL_ADC_REG_StartConversion - * @param ADCx ADC instance - * @retval None - */ -__STATIC_INLINE void LL_ADC_REG_StartConversion(ADC_TypeDef *ADCx) -{ - 8006550: b580 push {r7, lr} - 8006552: b082 sub sp, #8 - 8006554: af00 add r7, sp, #0 - 8006556: 6078 str r0, [r7, #4] - /* Note: Write register with some additional bits forced to state reset */ - /* instead of modifying only the selected bit for this function, */ - /* to not interfere with bits with HW property "rs". */ - MODIFY_REG(ADCx->CR, - 8006558: 687b ldr r3, [r7, #4] - 800655a: 689b ldr r3, [r3, #8] - 800655c: 4a04 ldr r2, [pc, #16] ; (8006570 ) - 800655e: 4013 ands r3, r2 - 8006560: 2204 movs r2, #4 - 8006562: 431a orrs r2, r3 - 8006564: 687b ldr r3, [r7, #4] - 8006566: 609a str r2, [r3, #8] - ADC_CR_BITS_PROPERTY_RS, - ADC_CR_ADSTART); -} - 8006568: 46c0 nop ; (mov r8, r8) - 800656a: 46bd mov sp, r7 - 800656c: b002 add sp, #8 - 800656e: bd80 pop {r7, pc} - 8006570: 7fffffe8 .word 0x7fffffe8 - -08006574 : - * @rmtoll CR ADSTP LL_ADC_REG_StopConversion - * @param ADCx ADC instance - * @retval None - */ -__STATIC_INLINE void LL_ADC_REG_StopConversion(ADC_TypeDef *ADCx) -{ - 8006574: b580 push {r7, lr} - 8006576: b082 sub sp, #8 - 8006578: af00 add r7, sp, #0 - 800657a: 6078 str r0, [r7, #4] - /* Note: Write register with some additional bits forced to state reset */ - /* instead of modifying only the selected bit for this function, */ - /* to not interfere with bits with HW property "rs". */ - MODIFY_REG(ADCx->CR, - 800657c: 687b ldr r3, [r7, #4] - 800657e: 689b ldr r3, [r3, #8] - 8006580: 4a04 ldr r2, [pc, #16] ; (8006594 ) - 8006582: 4013 ands r3, r2 - 8006584: 2210 movs r2, #16 - 8006586: 431a orrs r2, r3 - 8006588: 687b ldr r3, [r7, #4] - 800658a: 609a str r2, [r3, #8] - ADC_CR_BITS_PROPERTY_RS, - ADC_CR_ADSTP); -} - 800658c: 46c0 nop ; (mov r8, r8) - 800658e: 46bd mov sp, r7 - 8006590: b002 add sp, #8 - 8006592: bd80 pop {r7, pc} - 8006594: 7fffffe8 .word 0x7fffffe8 - -08006598 : - * @rmtoll CR ADSTART LL_ADC_REG_IsConversionOngoing - * @param ADCx ADC instance - * @retval 0: no conversion is on going on ADC group regular. - */ -__STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx) -{ - 8006598: b580 push {r7, lr} - 800659a: b082 sub sp, #8 - 800659c: af00 add r7, sp, #0 - 800659e: 6078 str r0, [r7, #4] - return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL); - 80065a0: 687b ldr r3, [r7, #4] - 80065a2: 689b ldr r3, [r3, #8] - 80065a4: 2204 movs r2, #4 - 80065a6: 4013 ands r3, r2 - 80065a8: 2b04 cmp r3, #4 - 80065aa: d101 bne.n 80065b0 - 80065ac: 2301 movs r3, #1 - 80065ae: e000 b.n 80065b2 - 80065b0: 2300 movs r3, #0 -} - 80065b2: 0018 movs r0, r3 - 80065b4: 46bd mov sp, r7 - 80065b6: b002 add sp, #8 - 80065b8: bd80 pop {r7, pc} - ... - -080065bc : - * of structure "ADC_InitTypeDef". - * @param hadc ADC handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc) -{ - 80065bc: b580 push {r7, lr} - 80065be: b088 sub sp, #32 - 80065c0: af00 add r7, sp, #0 - 80065c2: 6078 str r0, [r7, #4] - HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 80065c4: 231f movs r3, #31 - 80065c6: 18fb adds r3, r7, r3 - 80065c8: 2200 movs r2, #0 - 80065ca: 701a strb r2, [r3, #0] - uint32_t tmpCFGR1 = 0UL; - 80065cc: 2300 movs r3, #0 - 80065ce: 61bb str r3, [r7, #24] - uint32_t tmpCFGR2 = 0UL; - 80065d0: 2300 movs r3, #0 - 80065d2: 617b str r3, [r7, #20] - uint32_t tmp_adc_reg_is_conversion_on_going; - __IO uint32_t wait_loop_index = 0UL; - 80065d4: 2300 movs r3, #0 - 80065d6: 60fb str r3, [r7, #12] - - /* Check ADC handle */ - if (hadc == NULL) - 80065d8: 687b ldr r3, [r7, #4] - 80065da: 2b00 cmp r3, #0 - 80065dc: d101 bne.n 80065e2 - { - return HAL_ERROR; - 80065de: 2301 movs r3, #1 - 80065e0: e17f b.n 80068e2 - /* continuous mode is disabled. */ - assert_param(!((hadc->Init.DiscontinuousConvMode == ENABLE) && (hadc->Init.ContinuousConvMode == ENABLE))); - - /* Actions performed only if ADC is coming from state reset: */ - /* - Initialization of ADC MSP */ - if (hadc->State == HAL_ADC_STATE_RESET) - 80065e2: 687b ldr r3, [r7, #4] - 80065e4: 6d9b ldr r3, [r3, #88] ; 0x58 - 80065e6: 2b00 cmp r3, #0 - 80065e8: d10a bne.n 8006600 - - /* Init the low level hardware */ - hadc->MspInitCallback(hadc); -#else - /* Init the low level hardware */ - HAL_ADC_MspInit(hadc); - 80065ea: 687b ldr r3, [r7, #4] - 80065ec: 0018 movs r0, r3 - 80065ee: f7fb f9fd bl 80019ec -#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ - - /* Set ADC error code to none */ - ADC_CLEAR_ERRORCODE(hadc); - 80065f2: 687b ldr r3, [r7, #4] - 80065f4: 2200 movs r2, #0 - 80065f6: 65da str r2, [r3, #92] ; 0x5c - - /* Initialize Lock */ - hadc->Lock = HAL_UNLOCKED; - 80065f8: 687b ldr r3, [r7, #4] - 80065fa: 2254 movs r2, #84 ; 0x54 - 80065fc: 2100 movs r1, #0 - 80065fe: 5499 strb r1, [r3, r2] - } - - if (LL_ADC_IsInternalRegulatorEnabled(hadc->Instance) == 0UL) - 8006600: 687b ldr r3, [r7, #4] - 8006602: 681b ldr r3, [r3, #0] - 8006604: 0018 movs r0, r3 - 8006606: f7ff ff49 bl 800649c - 800660a: 1e03 subs r3, r0, #0 - 800660c: d115 bne.n 800663a - { - /* Enable ADC internal voltage regulator */ - LL_ADC_EnableInternalRegulator(hadc->Instance); - 800660e: 687b ldr r3, [r7, #4] - 8006610: 681b ldr r3, [r3, #0] - 8006612: 0018 movs r0, r3 - 8006614: f7ff ff2e bl 8006474 - /* Delay for ADC stabilization time */ - /* Wait loop initialization and execution */ - /* Note: Variable divided by 2 to compensate partially */ - /* CPU processing cycles, scaling in us split to not */ - /* exceed 32 bits register capacity and handle low frequency. */ - wait_loop_index = ((LL_ADC_DELAY_INTERNAL_REGUL_STAB_US / 10UL) * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); - 8006618: 4bb4 ldr r3, [pc, #720] ; (80068ec ) - 800661a: 681b ldr r3, [r3, #0] - 800661c: 49b4 ldr r1, [pc, #720] ; (80068f0 ) - 800661e: 0018 movs r0, r3 - 8006620: f7f9 fd84 bl 800012c <__udivsi3> - 8006624: 0003 movs r3, r0 - 8006626: 3301 adds r3, #1 - 8006628: 005b lsls r3, r3, #1 - 800662a: 60fb str r3, [r7, #12] - while (wait_loop_index != 0UL) - 800662c: e002 b.n 8006634 - { - wait_loop_index--; - 800662e: 68fb ldr r3, [r7, #12] - 8006630: 3b01 subs r3, #1 - 8006632: 60fb str r3, [r7, #12] - while (wait_loop_index != 0UL) - 8006634: 68fb ldr r3, [r7, #12] - 8006636: 2b00 cmp r3, #0 - 8006638: d1f9 bne.n 800662e - } - - /* Verification that ADC voltage regulator is correctly enabled, whether */ - /* or not ADC is coming from state reset (if any potential problem of */ - /* clocking, voltage regulator would not be enabled). */ - if (LL_ADC_IsInternalRegulatorEnabled(hadc->Instance) == 0UL) - 800663a: 687b ldr r3, [r7, #4] - 800663c: 681b ldr r3, [r3, #0] - 800663e: 0018 movs r0, r3 - 8006640: f7ff ff2c bl 800649c - 8006644: 1e03 subs r3, r0, #0 - 8006646: d10f bne.n 8006668 - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8006648: 687b ldr r3, [r7, #4] - 800664a: 6d9b ldr r3, [r3, #88] ; 0x58 - 800664c: 2210 movs r2, #16 - 800664e: 431a orrs r2, r3 - 8006650: 687b ldr r3, [r7, #4] - 8006652: 659a str r2, [r3, #88] ; 0x58 - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8006654: 687b ldr r3, [r7, #4] - 8006656: 6ddb ldr r3, [r3, #92] ; 0x5c - 8006658: 2201 movs r2, #1 - 800665a: 431a orrs r2, r3 - 800665c: 687b ldr r3, [r7, #4] - 800665e: 65da str r2, [r3, #92] ; 0x5c - - tmp_hal_status = HAL_ERROR; - 8006660: 231f movs r3, #31 - 8006662: 18fb adds r3, r7, r3 - 8006664: 2201 movs r2, #1 - 8006666: 701a strb r2, [r3, #0] - - /* Configuration of ADC parameters if previous preliminary actions are */ - /* correctly completed and if there is no conversion on going on regular */ - /* group (ADC may already be enabled at this point if HAL_ADC_Init() is */ - /* called to update a parameter on the fly). */ - tmp_adc_reg_is_conversion_on_going = LL_ADC_REG_IsConversionOngoing(hadc->Instance); - 8006668: 687b ldr r3, [r7, #4] - 800666a: 681b ldr r3, [r3, #0] - 800666c: 0018 movs r0, r3 - 800666e: f7ff ff93 bl 8006598 - 8006672: 0003 movs r3, r0 - 8006674: 613b str r3, [r7, #16] - - if (((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) == 0UL) - 8006676: 687b ldr r3, [r7, #4] - 8006678: 6d9b ldr r3, [r3, #88] ; 0x58 - 800667a: 2210 movs r2, #16 - 800667c: 4013 ands r3, r2 - 800667e: d000 beq.n 8006682 - 8006680: e122 b.n 80068c8 - && (tmp_adc_reg_is_conversion_on_going == 0UL) - 8006682: 693b ldr r3, [r7, #16] - 8006684: 2b00 cmp r3, #0 - 8006686: d000 beq.n 800668a - 8006688: e11e b.n 80068c8 - ) - { - /* Set ADC state */ - ADC_STATE_CLR_SET(hadc->State, - 800668a: 687b ldr r3, [r7, #4] - 800668c: 6d9b ldr r3, [r3, #88] ; 0x58 - 800668e: 4a99 ldr r2, [pc, #612] ; (80068f4 ) - 8006690: 4013 ands r3, r2 - 8006692: 2202 movs r2, #2 - 8006694: 431a orrs r2, r3 - 8006696: 687b ldr r3, [r7, #4] - 8006698: 659a str r2, [r3, #88] ; 0x58 - /* - DMA continuous request */ - /* - Trigger frequency mode */ - /* Note: If low power mode AutoPowerOff is enabled, ADC enable */ - /* and disable phases are performed automatically by hardware */ - /* (in this case, flag ADC_FLAG_RDY is not set). */ - if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) - 800669a: 687b ldr r3, [r7, #4] - 800669c: 681b ldr r3, [r3, #0] - 800669e: 0018 movs r0, r3 - 80066a0: f7ff ff34 bl 800650c - 80066a4: 1e03 subs r3, r0, #0 - 80066a6: d000 beq.n 80066aa - 80066a8: e0ad b.n 8006806 - /* without needing to reconfigure all other ADC groups/channels */ - /* parameters): */ - /* - internal measurement paths (VrefInt, ...) */ - /* (set into HAL_ADC_ConfigChannel() ) */ - - tmpCFGR1 |= (hadc->Init.Resolution | - 80066aa: 687b ldr r3, [r7, #4] - 80066ac: 689a ldr r2, [r3, #8] - ADC_CFGR1_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) | - 80066ae: 687b ldr r3, [r7, #4] - 80066b0: 7e1b ldrb r3, [r3, #24] - 80066b2: 039b lsls r3, r3, #14 - tmpCFGR1 |= (hadc->Init.Resolution | - 80066b4: 431a orrs r2, r3 - ADC_CFGR1_AUTOOFF((uint32_t)hadc->Init.LowPowerAutoPowerOff) | - 80066b6: 687b ldr r3, [r7, #4] - 80066b8: 7e5b ldrb r3, [r3, #25] - 80066ba: 03db lsls r3, r3, #15 - ADC_CFGR1_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) | - 80066bc: 431a orrs r2, r3 - ADC_CFGR1_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 80066be: 687b ldr r3, [r7, #4] - 80066c0: 7e9b ldrb r3, [r3, #26] - 80066c2: 035b lsls r3, r3, #13 - ADC_CFGR1_AUTOOFF((uint32_t)hadc->Init.LowPowerAutoPowerOff) | - 80066c4: 431a orrs r2, r3 - ADC_CFGR1_OVERRUN(hadc->Init.Overrun) | - 80066c6: 687b ldr r3, [r7, #4] - 80066c8: 6b1b ldr r3, [r3, #48] ; 0x30 - 80066ca: 2b00 cmp r3, #0 - 80066cc: d002 beq.n 80066d4 - 80066ce: 2380 movs r3, #128 ; 0x80 - 80066d0: 015b lsls r3, r3, #5 - 80066d2: e000 b.n 80066d6 - 80066d4: 2300 movs r3, #0 - ADC_CFGR1_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 80066d6: 431a orrs r2, r3 - hadc->Init.DataAlign | - 80066d8: 687b ldr r3, [r7, #4] - 80066da: 68db ldr r3, [r3, #12] - ADC_CFGR1_OVERRUN(hadc->Init.Overrun) | - 80066dc: 431a orrs r2, r3 - ADC_SCAN_SEQ_MODE(hadc->Init.ScanConvMode) | - 80066de: 687b ldr r3, [r7, #4] - 80066e0: 691b ldr r3, [r3, #16] - 80066e2: 2b00 cmp r3, #0 - 80066e4: da04 bge.n 80066f0 - 80066e6: 687b ldr r3, [r7, #4] - 80066e8: 691b ldr r3, [r3, #16] - 80066ea: 005b lsls r3, r3, #1 - 80066ec: 085b lsrs r3, r3, #1 - 80066ee: e001 b.n 80066f4 - 80066f0: 2380 movs r3, #128 ; 0x80 - 80066f2: 039b lsls r3, r3, #14 - hadc->Init.DataAlign | - 80066f4: 431a orrs r2, r3 - ADC_CFGR1_DMACONTREQ((uint32_t)hadc->Init.DMAContinuousRequests)); - 80066f6: 687b ldr r3, [r7, #4] - 80066f8: 212c movs r1, #44 ; 0x2c - 80066fa: 5c5b ldrb r3, [r3, r1] - 80066fc: 005b lsls r3, r3, #1 - ADC_SCAN_SEQ_MODE(hadc->Init.ScanConvMode) | - 80066fe: 4313 orrs r3, r2 - tmpCFGR1 |= (hadc->Init.Resolution | - 8006700: 69ba ldr r2, [r7, #24] - 8006702: 4313 orrs r3, r2 - 8006704: 61bb str r3, [r7, #24] - - /* Update setting of discontinuous mode only if continuous mode is disabled */ - if (hadc->Init.DiscontinuousConvMode == ENABLE) - 8006706: 687b ldr r3, [r7, #4] - 8006708: 2220 movs r2, #32 - 800670a: 5c9b ldrb r3, [r3, r2] - 800670c: 2b01 cmp r3, #1 - 800670e: d115 bne.n 800673c - { - if (hadc->Init.ContinuousConvMode == DISABLE) - 8006710: 687b ldr r3, [r7, #4] - 8006712: 7e9b ldrb r3, [r3, #26] - 8006714: 2b00 cmp r3, #0 - 8006716: d105 bne.n 8006724 - { - /* Enable the selected ADC group regular discontinuous mode */ - tmpCFGR1 |= ADC_CFGR1_DISCEN; - 8006718: 69bb ldr r3, [r7, #24] - 800671a: 2280 movs r2, #128 ; 0x80 - 800671c: 0252 lsls r2, r2, #9 - 800671e: 4313 orrs r3, r2 - 8006720: 61bb str r3, [r7, #24] - 8006722: e00b b.n 800673c - /* ADC regular group discontinuous was intended to be enabled, */ - /* but ADC regular group modes continuous and sequencer discontinuous */ - /* cannot be enabled simultaneously. */ - - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8006724: 687b ldr r3, [r7, #4] - 8006726: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006728: 2220 movs r2, #32 - 800672a: 431a orrs r2, r3 - 800672c: 687b ldr r3, [r7, #4] - 800672e: 659a str r2, [r3, #88] ; 0x58 - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8006730: 687b ldr r3, [r7, #4] - 8006732: 6ddb ldr r3, [r3, #92] ; 0x5c - 8006734: 2201 movs r2, #1 - 8006736: 431a orrs r2, r3 - 8006738: 687b ldr r3, [r7, #4] - 800673a: 65da str r2, [r3, #92] ; 0x5c - /* Enable external trigger if trigger selection is different of software */ - /* start. */ - /* Note: This configuration keeps the hardware feature of parameter */ - /* ExternalTrigConvEdge "trigger edge none" equivalent to */ - /* software start. */ - if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) - 800673c: 687b ldr r3, [r7, #4] - 800673e: 6a5b ldr r3, [r3, #36] ; 0x24 - 8006740: 2b00 cmp r3, #0 - 8006742: d00a beq.n 800675a - { - tmpCFGR1 |= ((hadc->Init.ExternalTrigConv & ADC_CFGR1_EXTSEL) | - 8006744: 687b ldr r3, [r7, #4] - 8006746: 6a5a ldr r2, [r3, #36] ; 0x24 - 8006748: 23e0 movs r3, #224 ; 0xe0 - 800674a: 005b lsls r3, r3, #1 - 800674c: 401a ands r2, r3 - hadc->Init.ExternalTrigConvEdge); - 800674e: 687b ldr r3, [r7, #4] - 8006750: 6a9b ldr r3, [r3, #40] ; 0x28 - tmpCFGR1 |= ((hadc->Init.ExternalTrigConv & ADC_CFGR1_EXTSEL) | - 8006752: 4313 orrs r3, r2 - 8006754: 69ba ldr r2, [r7, #24] - 8006756: 4313 orrs r3, r2 - 8006758: 61bb str r3, [r7, #24] - } - - /* Update ADC configuration register with previous settings */ - MODIFY_REG(hadc->Instance->CFGR1, - 800675a: 687b ldr r3, [r7, #4] - 800675c: 681b ldr r3, [r3, #0] - 800675e: 68db ldr r3, [r3, #12] - 8006760: 4a65 ldr r2, [pc, #404] ; (80068f8 ) - 8006762: 4013 ands r3, r2 - 8006764: 0019 movs r1, r3 - 8006766: 687b ldr r3, [r7, #4] - 8006768: 681b ldr r3, [r3, #0] - 800676a: 69ba ldr r2, [r7, #24] - 800676c: 430a orrs r2, r1 - 800676e: 60da str r2, [r3, #12] - ADC_CFGR1_ALIGN | - ADC_CFGR1_SCANDIR | - ADC_CFGR1_DMACFG, - tmpCFGR1); - - tmpCFGR2 |= ((hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | - 8006770: 687b ldr r3, [r7, #4] - 8006772: 685b ldr r3, [r3, #4] - 8006774: 0f9b lsrs r3, r3, #30 - 8006776: 079a lsls r2, r3, #30 - hadc->Init.TriggerFrequencyMode - 8006778: 687b ldr r3, [r7, #4] - 800677a: 6cdb ldr r3, [r3, #76] ; 0x4c - tmpCFGR2 |= ((hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | - 800677c: 4313 orrs r3, r2 - 800677e: 697a ldr r2, [r7, #20] - 8006780: 4313 orrs r3, r2 - 8006782: 617b str r3, [r7, #20] - ); - - if (hadc->Init.OversamplingMode == ENABLE) - 8006784: 687b ldr r3, [r7, #4] - 8006786: 223c movs r2, #60 ; 0x3c - 8006788: 5c9b ldrb r3, [r3, r2] - 800678a: 2b01 cmp r3, #1 - 800678c: d111 bne.n 80067b2 - { - tmpCFGR2 |= (ADC_CFGR2_OVSE | - (hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | - 800678e: 687b ldr r3, [r7, #4] - 8006790: 685b ldr r3, [r3, #4] - 8006792: 0f9b lsrs r3, r3, #30 - 8006794: 079a lsls r2, r3, #30 - hadc->Init.Oversampling.Ratio | - 8006796: 687b ldr r3, [r7, #4] - 8006798: 6c1b ldr r3, [r3, #64] ; 0x40 - (hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | - 800679a: 431a orrs r2, r3 - hadc->Init.Oversampling.RightBitShift | - 800679c: 687b ldr r3, [r7, #4] - 800679e: 6c5b ldr r3, [r3, #68] ; 0x44 - hadc->Init.Oversampling.Ratio | - 80067a0: 431a orrs r2, r3 - hadc->Init.Oversampling.TriggeredMode - 80067a2: 687b ldr r3, [r7, #4] - 80067a4: 6c9b ldr r3, [r3, #72] ; 0x48 - hadc->Init.Oversampling.RightBitShift | - 80067a6: 431a orrs r2, r3 - tmpCFGR2 |= (ADC_CFGR2_OVSE | - 80067a8: 697b ldr r3, [r7, #20] - 80067aa: 4313 orrs r3, r2 - 80067ac: 2201 movs r2, #1 - 80067ae: 4313 orrs r3, r2 - 80067b0: 617b str r3, [r7, #20] - ); - } - - MODIFY_REG(hadc->Instance->CFGR2, - 80067b2: 687b ldr r3, [r7, #4] - 80067b4: 681b ldr r3, [r3, #0] - 80067b6: 691b ldr r3, [r3, #16] - 80067b8: 4a50 ldr r2, [pc, #320] ; (80068fc ) - 80067ba: 4013 ands r3, r2 - 80067bc: 0019 movs r1, r3 - 80067be: 687b ldr r3, [r7, #4] - 80067c0: 681b ldr r3, [r3, #0] - 80067c2: 697a ldr r2, [r7, #20] - 80067c4: 430a orrs r2, r1 - 80067c6: 611a str r2, [r3, #16] - ADC_CFGR2_TOVS, - tmpCFGR2); - - /* Configuration of ADC clock mode: asynchronous clock source */ - /* with selectable prescaler. */ - if (((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV1) && - 80067c8: 687b ldr r3, [r7, #4] - 80067ca: 685a ldr r2, [r3, #4] - 80067cc: 23c0 movs r3, #192 ; 0xc0 - 80067ce: 061b lsls r3, r3, #24 - 80067d0: 429a cmp r2, r3 - 80067d2: d018 beq.n 8006806 - ((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV2) && - 80067d4: 687b ldr r3, [r7, #4] - 80067d6: 685a ldr r2, [r3, #4] - if (((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV1) && - 80067d8: 2380 movs r3, #128 ; 0x80 - 80067da: 05db lsls r3, r3, #23 - 80067dc: 429a cmp r2, r3 - 80067de: d012 beq.n 8006806 - ((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV4)) - 80067e0: 687b ldr r3, [r7, #4] - 80067e2: 685a ldr r2, [r3, #4] - ((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV2) && - 80067e4: 2380 movs r3, #128 ; 0x80 - 80067e6: 061b lsls r3, r3, #24 - 80067e8: 429a cmp r2, r3 - 80067ea: d00c beq.n 8006806 - { - MODIFY_REG(ADC1_COMMON->CCR, - 80067ec: 4b44 ldr r3, [pc, #272] ; (8006900 ) - 80067ee: 681b ldr r3, [r3, #0] - 80067f0: 4a44 ldr r2, [pc, #272] ; (8006904 ) - 80067f2: 4013 ands r3, r2 - 80067f4: 0019 movs r1, r3 - 80067f6: 687b ldr r3, [r7, #4] - 80067f8: 685a ldr r2, [r3, #4] - 80067fa: 23f0 movs r3, #240 ; 0xf0 - 80067fc: 039b lsls r3, r3, #14 - 80067fe: 401a ands r2, r3 - 8006800: 4b3f ldr r3, [pc, #252] ; (8006900 ) - 8006802: 430a orrs r2, r1 - 8006804: 601a str r2, [r3, #0] - hadc->Init.ClockPrescaler & ADC_CCR_PRESC); - } - } - - /* Channel sampling time configuration */ - LL_ADC_SetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1, hadc->Init.SamplingTimeCommon1); - 8006806: 687b ldr r3, [r7, #4] - 8006808: 6818 ldr r0, [r3, #0] - 800680a: 687b ldr r3, [r7, #4] - 800680c: 6b5b ldr r3, [r3, #52] ; 0x34 - 800680e: 001a movs r2, r3 - 8006810: 2100 movs r1, #0 - 8006812: f7ff fd8a bl 800632a - LL_ADC_SetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_2, hadc->Init.SamplingTimeCommon2); - 8006816: 687b ldr r3, [r7, #4] - 8006818: 6818 ldr r0, [r3, #0] - 800681a: 687b ldr r3, [r7, #4] - 800681c: 6b9b ldr r3, [r3, #56] ; 0x38 - 800681e: 493a ldr r1, [pc, #232] ; (8006908 ) - 8006820: 001a movs r2, r3 - 8006822: f7ff fd82 bl 800632a - /* emulated by software for alignment over all STM32 devices. */ - /* - if scan mode is enabled, regular channels sequence length is set to */ - /* parameter "NbrOfConversion". */ - /* Channels must be configured into each rank using function */ - /* "HAL_ADC_ConfigChannel()". */ - if (hadc->Init.ScanConvMode == ADC_SCAN_DISABLE) - 8006826: 687b ldr r3, [r7, #4] - 8006828: 691b ldr r3, [r3, #16] - 800682a: 2b00 cmp r3, #0 - 800682c: d109 bne.n 8006842 - { - /* Set sequencer scan length by clearing ranks above rank 1 */ - /* and do not modify rank 1 value. */ - SET_BIT(hadc->Instance->CHSELR, - 800682e: 687b ldr r3, [r7, #4] - 8006830: 681b ldr r3, [r3, #0] - 8006832: 6a9a ldr r2, [r3, #40] ; 0x28 - 8006834: 687b ldr r3, [r7, #4] - 8006836: 681b ldr r3, [r3, #0] - 8006838: 2110 movs r1, #16 - 800683a: 4249 negs r1, r1 - 800683c: 430a orrs r2, r1 - 800683e: 629a str r2, [r3, #40] ; 0x28 - 8006840: e018 b.n 8006874 - ADC_CHSELR_SQ2_TO_SQ8); - } - else if (hadc->Init.ScanConvMode == ADC_SCAN_ENABLE) - 8006842: 687b ldr r3, [r7, #4] - 8006844: 691a ldr r2, [r3, #16] - 8006846: 2380 movs r3, #128 ; 0x80 - 8006848: 039b lsls r3, r3, #14 - 800684a: 429a cmp r2, r3 - 800684c: d112 bne.n 8006874 - /* therefore after the first call of "HAL_ADC_Init()", */ - /* each rank corresponding to parameter "NbrOfConversion" */ - /* must be set using "HAL_ADC_ConfigChannel()". */ - /* - Set sequencer scan length by clearing ranks above maximum rank */ - /* and do not modify other ranks value. */ - MODIFY_REG(hadc->Instance->CHSELR, - 800684e: 687b ldr r3, [r7, #4] - 8006850: 681b ldr r3, [r3, #0] - 8006852: 6a9b ldr r3, [r3, #40] ; 0x28 - 8006854: 687b ldr r3, [r7, #4] - 8006856: 69db ldr r3, [r3, #28] - 8006858: 3b01 subs r3, #1 - 800685a: 009b lsls r3, r3, #2 - 800685c: 221c movs r2, #28 - 800685e: 4013 ands r3, r2 - 8006860: 2210 movs r2, #16 - 8006862: 4252 negs r2, r2 - 8006864: 409a lsls r2, r3 - 8006866: 0011 movs r1, r2 - 8006868: 687b ldr r3, [r7, #4] - 800686a: 6e1a ldr r2, [r3, #96] ; 0x60 - 800686c: 687b ldr r3, [r7, #4] - 800686e: 681b ldr r3, [r3, #0] - 8006870: 430a orrs r2, r1 - 8006872: 629a str r2, [r3, #40] ; 0x28 - ); - } - - /* Check back that ADC registers have effectively been configured to */ - /* ensure of no potential problem of ADC core peripheral clocking. */ - if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) - 8006874: 687b ldr r3, [r7, #4] - 8006876: 681b ldr r3, [r3, #0] - 8006878: 2100 movs r1, #0 - 800687a: 0018 movs r0, r3 - 800687c: f7ff fd72 bl 8006364 - 8006880: 0002 movs r2, r0 - == hadc->Init.SamplingTimeCommon1) - 8006882: 687b ldr r3, [r7, #4] - 8006884: 6b5b ldr r3, [r3, #52] ; 0x34 - if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) - 8006886: 429a cmp r2, r3 - 8006888: d10b bne.n 80068a2 - { - /* Set ADC error code to none */ - ADC_CLEAR_ERRORCODE(hadc); - 800688a: 687b ldr r3, [r7, #4] - 800688c: 2200 movs r2, #0 - 800688e: 65da str r2, [r3, #92] ; 0x5c - - /* Set the ADC state */ - ADC_STATE_CLR_SET(hadc->State, - 8006890: 687b ldr r3, [r7, #4] - 8006892: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006894: 2203 movs r2, #3 - 8006896: 4393 bics r3, r2 - 8006898: 2201 movs r2, #1 - 800689a: 431a orrs r2, r3 - 800689c: 687b ldr r3, [r7, #4] - 800689e: 659a str r2, [r3, #88] ; 0x58 - if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) - 80068a0: e01c b.n 80068dc - HAL_ADC_STATE_READY); - } - else - { - /* Update ADC state machine to error */ - ADC_STATE_CLR_SET(hadc->State, - 80068a2: 687b ldr r3, [r7, #4] - 80068a4: 6d9b ldr r3, [r3, #88] ; 0x58 - 80068a6: 2212 movs r2, #18 - 80068a8: 4393 bics r3, r2 - 80068aa: 2210 movs r2, #16 - 80068ac: 431a orrs r2, r3 - 80068ae: 687b ldr r3, [r7, #4] - 80068b0: 659a str r2, [r3, #88] ; 0x58 - HAL_ADC_STATE_BUSY_INTERNAL, - HAL_ADC_STATE_ERROR_INTERNAL); - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 80068b2: 687b ldr r3, [r7, #4] - 80068b4: 6ddb ldr r3, [r3, #92] ; 0x5c - 80068b6: 2201 movs r2, #1 - 80068b8: 431a orrs r2, r3 - 80068ba: 687b ldr r3, [r7, #4] - 80068bc: 65da str r2, [r3, #92] ; 0x5c - - tmp_hal_status = HAL_ERROR; - 80068be: 231f movs r3, #31 - 80068c0: 18fb adds r3, r7, r3 - 80068c2: 2201 movs r2, #1 - 80068c4: 701a strb r2, [r3, #0] - if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) - 80068c6: e009 b.n 80068dc - - } - else - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 80068c8: 687b ldr r3, [r7, #4] - 80068ca: 6d9b ldr r3, [r3, #88] ; 0x58 - 80068cc: 2210 movs r2, #16 - 80068ce: 431a orrs r2, r3 - 80068d0: 687b ldr r3, [r7, #4] - 80068d2: 659a str r2, [r3, #88] ; 0x58 - - tmp_hal_status = HAL_ERROR; - 80068d4: 231f movs r3, #31 - 80068d6: 18fb adds r3, r7, r3 - 80068d8: 2201 movs r2, #1 - 80068da: 701a strb r2, [r3, #0] - } - - return tmp_hal_status; - 80068dc: 231f movs r3, #31 - 80068de: 18fb adds r3, r7, r3 - 80068e0: 781b ldrb r3, [r3, #0] -} - 80068e2: 0018 movs r0, r3 - 80068e4: 46bd mov sp, r7 - 80068e6: b008 add sp, #32 - 80068e8: bd80 pop {r7, pc} - 80068ea: 46c0 nop ; (mov r8, r8) - 80068ec: 20000040 .word 0x20000040 - 80068f0: 00030d40 .word 0x00030d40 - 80068f4: fffffefd .word 0xfffffefd - 80068f8: fffe0201 .word 0xfffe0201 - 80068fc: 1ffffc02 .word 0x1ffffc02 - 8006900: 40012708 .word 0x40012708 - 8006904: ffc3ffff .word 0xffc3ffff - 8006908: 07ffff04 .word 0x07ffff04 - -0800690c : - * @note Interruptions enabled in this function: None. - * @param hadc ADC handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc) -{ - 800690c: b5b0 push {r4, r5, r7, lr} - 800690e: b084 sub sp, #16 - 8006910: af00 add r7, sp, #0 - 8006912: 6078 str r0, [r7, #4] - - /* Check the parameters */ - assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); - - /* Perform ADC enable and conversion start if no conversion is on going */ - if (LL_ADC_REG_IsConversionOngoing(hadc->Instance) == 0UL) - 8006914: 687b ldr r3, [r7, #4] - 8006916: 681b ldr r3, [r3, #0] - 8006918: 0018 movs r0, r3 - 800691a: f7ff fe3d bl 8006598 - 800691e: 1e03 subs r3, r0, #0 - 8006920: d135 bne.n 800698e - { - __HAL_LOCK(hadc); - 8006922: 687b ldr r3, [r7, #4] - 8006924: 2254 movs r2, #84 ; 0x54 - 8006926: 5c9b ldrb r3, [r3, r2] - 8006928: 2b01 cmp r3, #1 - 800692a: d101 bne.n 8006930 - 800692c: 2302 movs r3, #2 - 800692e: e035 b.n 800699c - 8006930: 687b ldr r3, [r7, #4] - 8006932: 2254 movs r2, #84 ; 0x54 - 8006934: 2101 movs r1, #1 - 8006936: 5499 strb r1, [r3, r2] - - /* Enable the ADC peripheral */ - tmp_hal_status = ADC_Enable(hadc); - 8006938: 250f movs r5, #15 - 800693a: 197c adds r4, r7, r5 - 800693c: 687b ldr r3, [r7, #4] - 800693e: 0018 movs r0, r3 - 8006940: f000 fb28 bl 8006f94 - 8006944: 0003 movs r3, r0 - 8006946: 7023 strb r3, [r4, #0] - - /* Start conversion if ADC is effectively enabled */ - if (tmp_hal_status == HAL_OK) - 8006948: 197b adds r3, r7, r5 - 800694a: 781b ldrb r3, [r3, #0] - 800694c: 2b00 cmp r3, #0 - 800694e: d119 bne.n 8006984 - { - /* Set ADC state */ - /* - Clear state bitfield related to regular group conversion results */ - /* - Set state bitfield related to regular operation */ - ADC_STATE_CLR_SET(hadc->State, - 8006950: 687b ldr r3, [r7, #4] - 8006952: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006954: 4a13 ldr r2, [pc, #76] ; (80069a4 ) - 8006956: 4013 ands r3, r2 - 8006958: 2280 movs r2, #128 ; 0x80 - 800695a: 0052 lsls r2, r2, #1 - 800695c: 431a orrs r2, r3 - 800695e: 687b ldr r3, [r7, #4] - 8006960: 659a str r2, [r3, #88] ; 0x58 - HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR | HAL_ADC_STATE_REG_EOSMP, - HAL_ADC_STATE_REG_BUSY); - - /* Set ADC error code */ - /* Reset all ADC error code fields */ - ADC_CLEAR_ERRORCODE(hadc); - 8006962: 687b ldr r3, [r7, #4] - 8006964: 2200 movs r2, #0 - 8006966: 65da str r2, [r3, #92] ; 0x5c - - /* Clear ADC group regular conversion flag and overrun flag */ - /* (To ensure of no unknown state from potential previous ADC operations) */ - __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_OVR)); - 8006968: 687b ldr r3, [r7, #4] - 800696a: 681b ldr r3, [r3, #0] - 800696c: 221c movs r2, #28 - 800696e: 601a str r2, [r3, #0] - - /* Process unlocked */ - /* Unlock before starting ADC conversions: in case of potential */ - /* interruption, to let the process to ADC IRQ Handler. */ - __HAL_UNLOCK(hadc); - 8006970: 687b ldr r3, [r7, #4] - 8006972: 2254 movs r2, #84 ; 0x54 - 8006974: 2100 movs r1, #0 - 8006976: 5499 strb r1, [r3, r2] - /* Enable conversion of regular group. */ - /* If software start has been selected, conversion starts immediately. */ - /* If external trigger has been selected, conversion will start at next */ - /* trigger event. */ - /* Start ADC group regular conversion */ - LL_ADC_REG_StartConversion(hadc->Instance); - 8006978: 687b ldr r3, [r7, #4] - 800697a: 681b ldr r3, [r3, #0] - 800697c: 0018 movs r0, r3 - 800697e: f7ff fde7 bl 8006550 - 8006982: e008 b.n 8006996 - } - else - { - __HAL_UNLOCK(hadc); - 8006984: 687b ldr r3, [r7, #4] - 8006986: 2254 movs r2, #84 ; 0x54 - 8006988: 2100 movs r1, #0 - 800698a: 5499 strb r1, [r3, r2] - 800698c: e003 b.n 8006996 - } - } - else - { - tmp_hal_status = HAL_BUSY; - 800698e: 230f movs r3, #15 - 8006990: 18fb adds r3, r7, r3 - 8006992: 2202 movs r2, #2 - 8006994: 701a strb r2, [r3, #0] - } - - return tmp_hal_status; - 8006996: 230f movs r3, #15 - 8006998: 18fb adds r3, r7, r3 - 800699a: 781b ldrb r3, [r3, #0] -} - 800699c: 0018 movs r0, r3 - 800699e: 46bd mov sp, r7 - 80069a0: b004 add sp, #16 - 80069a2: bdb0 pop {r4, r5, r7, pc} - 80069a4: fffff0fe .word 0xfffff0fe - -080069a8 : - * should be preliminarily stopped using HAL_ADCEx_InjectedStop function. - * @param hadc ADC handle - * @retval HAL status. - */ -HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc) -{ - 80069a8: b5b0 push {r4, r5, r7, lr} - 80069aa: b084 sub sp, #16 - 80069ac: af00 add r7, sp, #0 - 80069ae: 6078 str r0, [r7, #4] - HAL_StatusTypeDef tmp_hal_status; - - /* Check the parameters */ - assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); - - __HAL_LOCK(hadc); - 80069b0: 687b ldr r3, [r7, #4] - 80069b2: 2254 movs r2, #84 ; 0x54 - 80069b4: 5c9b ldrb r3, [r3, r2] - 80069b6: 2b01 cmp r3, #1 - 80069b8: d101 bne.n 80069be - 80069ba: 2302 movs r3, #2 - 80069bc: e029 b.n 8006a12 - 80069be: 687b ldr r3, [r7, #4] - 80069c0: 2254 movs r2, #84 ; 0x54 - 80069c2: 2101 movs r1, #1 - 80069c4: 5499 strb r1, [r3, r2] - - /* 1. Stop potential conversion on going, on ADC group regular */ - tmp_hal_status = ADC_ConversionStop(hadc); - 80069c6: 250f movs r5, #15 - 80069c8: 197c adds r4, r7, r5 - 80069ca: 687b ldr r3, [r7, #4] - 80069cc: 0018 movs r0, r3 - 80069ce: f000 fa9f bl 8006f10 - 80069d2: 0003 movs r3, r0 - 80069d4: 7023 strb r3, [r4, #0] - - /* Disable ADC peripheral if conversions are effectively stopped */ - if (tmp_hal_status == HAL_OK) - 80069d6: 197b adds r3, r7, r5 - 80069d8: 781b ldrb r3, [r3, #0] - 80069da: 2b00 cmp r3, #0 - 80069dc: d112 bne.n 8006a04 - { - /* 2. Disable the ADC peripheral */ - tmp_hal_status = ADC_Disable(hadc); - 80069de: 197c adds r4, r7, r5 - 80069e0: 687b ldr r3, [r7, #4] - 80069e2: 0018 movs r0, r3 - 80069e4: f000 fb5c bl 80070a0 - 80069e8: 0003 movs r3, r0 - 80069ea: 7023 strb r3, [r4, #0] - - /* Check if ADC is effectively disabled */ - if (tmp_hal_status == HAL_OK) - 80069ec: 197b adds r3, r7, r5 - 80069ee: 781b ldrb r3, [r3, #0] - 80069f0: 2b00 cmp r3, #0 - 80069f2: d107 bne.n 8006a04 - { - /* Set ADC state */ - ADC_STATE_CLR_SET(hadc->State, - 80069f4: 687b ldr r3, [r7, #4] - 80069f6: 6d9b ldr r3, [r3, #88] ; 0x58 - 80069f8: 4a08 ldr r2, [pc, #32] ; (8006a1c ) - 80069fa: 4013 ands r3, r2 - 80069fc: 2201 movs r2, #1 - 80069fe: 431a orrs r2, r3 - 8006a00: 687b ldr r3, [r7, #4] - 8006a02: 659a str r2, [r3, #88] ; 0x58 - HAL_ADC_STATE_REG_BUSY, - HAL_ADC_STATE_READY); - } - } - - __HAL_UNLOCK(hadc); - 8006a04: 687b ldr r3, [r7, #4] - 8006a06: 2254 movs r2, #84 ; 0x54 - 8006a08: 2100 movs r1, #0 - 8006a0a: 5499 strb r1, [r3, r2] - - return tmp_hal_status; - 8006a0c: 230f movs r3, #15 - 8006a0e: 18fb adds r3, r7, r3 - 8006a10: 781b ldrb r3, [r3, #0] -} - 8006a12: 0018 movs r0, r3 - 8006a14: 46bd mov sp, r7 - 8006a16: b004 add sp, #16 - 8006a18: bdb0 pop {r4, r5, r7, pc} - 8006a1a: 46c0 nop ; (mov r8, r8) - 8006a1c: fffffefe .word 0xfffffefe - -08006a20 : - * @param hadc ADC handle - * @param Timeout Timeout value in millisecond. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout) -{ - 8006a20: b580 push {r7, lr} - 8006a22: b084 sub sp, #16 - 8006a24: af00 add r7, sp, #0 - 8006a26: 6078 str r0, [r7, #4] - 8006a28: 6039 str r1, [r7, #0] - - /* Check the parameters */ - assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); - - /* If end of conversion selected to end of sequence conversions */ - if (hadc->Init.EOCSelection == ADC_EOC_SEQ_CONV) - 8006a2a: 687b ldr r3, [r7, #4] - 8006a2c: 695b ldr r3, [r3, #20] - 8006a2e: 2b08 cmp r3, #8 - 8006a30: d102 bne.n 8006a38 - { - tmp_flag_end = ADC_FLAG_EOS; - 8006a32: 2308 movs r3, #8 - 8006a34: 60fb str r3, [r7, #12] - 8006a36: e00f b.n 8006a58 - /* each conversion: */ - /* Particular case is ADC configured in DMA mode and ADC sequencer with */ - /* several ranks and polling for end of each conversion. */ - /* For code simplicity sake, this particular case is generalized to */ - /* ADC configured in DMA mode and and polling for end of each conversion. */ - if ((hadc->Instance->CFGR1 & ADC_CFGR1_DMAEN) != 0UL) - 8006a38: 687b ldr r3, [r7, #4] - 8006a3a: 681b ldr r3, [r3, #0] - 8006a3c: 68db ldr r3, [r3, #12] - 8006a3e: 2201 movs r2, #1 - 8006a40: 4013 ands r3, r2 - 8006a42: d007 beq.n 8006a54 - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8006a44: 687b ldr r3, [r7, #4] - 8006a46: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006a48: 2220 movs r2, #32 - 8006a4a: 431a orrs r2, r3 - 8006a4c: 687b ldr r3, [r7, #4] - 8006a4e: 659a str r2, [r3, #88] ; 0x58 - - return HAL_ERROR; - 8006a50: 2301 movs r3, #1 - 8006a52: e072 b.n 8006b3a - } - else - { - tmp_flag_end = (ADC_FLAG_EOC); - 8006a54: 2304 movs r3, #4 - 8006a56: 60fb str r3, [r7, #12] - } - } - - /* Get tick count */ - tickstart = HAL_GetTick(); - 8006a58: f7ff fc02 bl 8006260 - 8006a5c: 0003 movs r3, r0 - 8006a5e: 60bb str r3, [r7, #8] - - /* Wait until End of unitary conversion or sequence conversions flag is raised */ - while ((hadc->Instance->ISR & tmp_flag_end) == 0UL) - 8006a60: e01f b.n 8006aa2 - { - /* Check if timeout is disabled (set to infinite wait) */ - if (Timeout != HAL_MAX_DELAY) - 8006a62: 683b ldr r3, [r7, #0] - 8006a64: 3301 adds r3, #1 - 8006a66: d01c beq.n 8006aa2 - { - if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0UL)) - 8006a68: f7ff fbfa bl 8006260 - 8006a6c: 0002 movs r2, r0 - 8006a6e: 68bb ldr r3, [r7, #8] - 8006a70: 1ad3 subs r3, r2, r3 - 8006a72: 683a ldr r2, [r7, #0] - 8006a74: 429a cmp r2, r3 - 8006a76: d302 bcc.n 8006a7e - 8006a78: 683b ldr r3, [r7, #0] - 8006a7a: 2b00 cmp r3, #0 - 8006a7c: d111 bne.n 8006aa2 - { - /* New check to avoid false timeout detection in case of preemption */ - if ((hadc->Instance->ISR & tmp_flag_end) == 0UL) - 8006a7e: 687b ldr r3, [r7, #4] - 8006a80: 681b ldr r3, [r3, #0] - 8006a82: 681b ldr r3, [r3, #0] - 8006a84: 68fa ldr r2, [r7, #12] - 8006a86: 4013 ands r3, r2 - 8006a88: d10b bne.n 8006aa2 - { - /* Update ADC state machine to timeout */ - SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT); - 8006a8a: 687b ldr r3, [r7, #4] - 8006a8c: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006a8e: 2204 movs r2, #4 - 8006a90: 431a orrs r2, r3 - 8006a92: 687b ldr r3, [r7, #4] - 8006a94: 659a str r2, [r3, #88] ; 0x58 - - __HAL_UNLOCK(hadc); - 8006a96: 687b ldr r3, [r7, #4] - 8006a98: 2254 movs r2, #84 ; 0x54 - 8006a9a: 2100 movs r1, #0 - 8006a9c: 5499 strb r1, [r3, r2] - - return HAL_TIMEOUT; - 8006a9e: 2303 movs r3, #3 - 8006aa0: e04b b.n 8006b3a - while ((hadc->Instance->ISR & tmp_flag_end) == 0UL) - 8006aa2: 687b ldr r3, [r7, #4] - 8006aa4: 681b ldr r3, [r3, #0] - 8006aa6: 681b ldr r3, [r3, #0] - 8006aa8: 68fa ldr r2, [r7, #12] - 8006aaa: 4013 ands r3, r2 - 8006aac: d0d9 beq.n 8006a62 - } - } - } - - /* Update ADC state machine */ - SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); - 8006aae: 687b ldr r3, [r7, #4] - 8006ab0: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006ab2: 2280 movs r2, #128 ; 0x80 - 8006ab4: 0092 lsls r2, r2, #2 - 8006ab6: 431a orrs r2, r3 - 8006ab8: 687b ldr r3, [r7, #4] - 8006aba: 659a str r2, [r3, #88] ; 0x58 - - /* Determine whether any further conversion upcoming on group regular */ - /* by external trigger, continuous mode or scan sequence on going. */ - if ((LL_ADC_REG_IsTriggerSourceSWStart(hadc->Instance) != 0UL) - 8006abc: 687b ldr r3, [r7, #4] - 8006abe: 681b ldr r3, [r3, #0] - 8006ac0: 0018 movs r0, r3 - 8006ac2: f7ff fc66 bl 8006392 - 8006ac6: 1e03 subs r3, r0, #0 - 8006ac8: d02e beq.n 8006b28 - && (hadc->Init.ContinuousConvMode == DISABLE) - 8006aca: 687b ldr r3, [r7, #4] - 8006acc: 7e9b ldrb r3, [r3, #26] - 8006ace: 2b00 cmp r3, #0 - 8006ad0: d12a bne.n 8006b28 - ) - { - /* Check whether end of sequence is reached */ - if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOS)) - 8006ad2: 687b ldr r3, [r7, #4] - 8006ad4: 681b ldr r3, [r3, #0] - 8006ad6: 681b ldr r3, [r3, #0] - 8006ad8: 2208 movs r2, #8 - 8006ada: 4013 ands r3, r2 - 8006adc: 2b08 cmp r3, #8 - 8006ade: d123 bne.n 8006b28 - { - /* Allowed to modify bits ADC_IT_EOC/ADC_IT_EOS only if bit */ - /* ADSTART==0 (no conversion on going) */ - if (LL_ADC_REG_IsConversionOngoing(hadc->Instance) == 0UL) - 8006ae0: 687b ldr r3, [r7, #4] - 8006ae2: 681b ldr r3, [r3, #0] - 8006ae4: 0018 movs r0, r3 - 8006ae6: f7ff fd57 bl 8006598 - 8006aea: 1e03 subs r3, r0, #0 - 8006aec: d110 bne.n 8006b10 - { - /* Disable ADC end of single conversion interrupt on group regular */ - /* Note: Overrun interrupt was enabled with EOC interrupt in */ - /* HAL_Start_IT(), but is not disabled here because can be used */ - /* by overrun IRQ process below. */ - __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC | ADC_IT_EOS); - 8006aee: 687b ldr r3, [r7, #4] - 8006af0: 681b ldr r3, [r3, #0] - 8006af2: 685a ldr r2, [r3, #4] - 8006af4: 687b ldr r3, [r7, #4] - 8006af6: 681b ldr r3, [r3, #0] - 8006af8: 210c movs r1, #12 - 8006afa: 438a bics r2, r1 - 8006afc: 605a str r2, [r3, #4] - - /* Set ADC state */ - ADC_STATE_CLR_SET(hadc->State, - 8006afe: 687b ldr r3, [r7, #4] - 8006b00: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006b02: 4a10 ldr r2, [pc, #64] ; (8006b44 ) - 8006b04: 4013 ands r3, r2 - 8006b06: 2201 movs r2, #1 - 8006b08: 431a orrs r2, r3 - 8006b0a: 687b ldr r3, [r7, #4] - 8006b0c: 659a str r2, [r3, #88] ; 0x58 - 8006b0e: e00b b.n 8006b28 - HAL_ADC_STATE_READY); - } - else - { - /* Change ADC state to error state */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8006b10: 687b ldr r3, [r7, #4] - 8006b12: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006b14: 2220 movs r2, #32 - 8006b16: 431a orrs r2, r3 - 8006b18: 687b ldr r3, [r7, #4] - 8006b1a: 659a str r2, [r3, #88] ; 0x58 - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8006b1c: 687b ldr r3, [r7, #4] - 8006b1e: 6ddb ldr r3, [r3, #92] ; 0x5c - 8006b20: 2201 movs r2, #1 - 8006b22: 431a orrs r2, r3 - 8006b24: 687b ldr r3, [r7, #4] - 8006b26: 65da str r2, [r3, #92] ; 0x5c - } - - /* Clear end of conversion flag of regular group if low power feature */ - /* "LowPowerAutoWait " is disabled, to not interfere with this feature */ - /* until data register is read using function HAL_ADC_GetValue(). */ - if (hadc->Init.LowPowerAutoWait == DISABLE) - 8006b28: 687b ldr r3, [r7, #4] - 8006b2a: 7e1b ldrb r3, [r3, #24] - 8006b2c: 2b00 cmp r3, #0 - 8006b2e: d103 bne.n 8006b38 - { - /* Clear regular group conversion flag */ - __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS)); - 8006b30: 687b ldr r3, [r7, #4] - 8006b32: 681b ldr r3, [r3, #0] - 8006b34: 220c movs r2, #12 - 8006b36: 601a str r2, [r3, #0] - } - - /* Return function status */ - return HAL_OK; - 8006b38: 2300 movs r3, #0 -} - 8006b3a: 0018 movs r0, r3 - 8006b3c: 46bd mov sp, r7 - 8006b3e: b004 add sp, #16 - 8006b40: bd80 pop {r7, pc} - 8006b42: 46c0 nop ; (mov r8, r8) - 8006b44: fffffefe .word 0xfffffefe - -08006b48 : - * or @ref __HAL_ADC_CLEAR_FLAG(&hadc, ADC_FLAG_EOS). - * @param hadc ADC handle - * @retval ADC group regular conversion data - */ -uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc) -{ - 8006b48: b580 push {r7, lr} - 8006b4a: b082 sub sp, #8 - 8006b4c: af00 add r7, sp, #0 - 8006b4e: 6078 str r0, [r7, #4] - - /* Note: EOC flag is not cleared here by software because automatically */ - /* cleared by hardware when reading register DR. */ - - /* Return ADC converted value */ - return hadc->Instance->DR; - 8006b50: 687b ldr r3, [r7, #4] - 8006b52: 681b ldr r3, [r3, #0] - 8006b54: 6c1b ldr r3, [r3, #64] ; 0x40 -} - 8006b56: 0018 movs r0, r3 - 8006b58: 46bd mov sp, r7 - 8006b5a: b002 add sp, #8 - 8006b5c: bd80 pop {r7, pc} - ... - -08006b60 : - * @param hadc ADC handle - * @param pConfig Structure of ADC channel assigned to ADC group regular. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *pConfig) -{ - 8006b60: b580 push {r7, lr} - 8006b62: b086 sub sp, #24 - 8006b64: af00 add r7, sp, #0 - 8006b66: 6078 str r0, [r7, #4] - 8006b68: 6039 str r1, [r7, #0] - HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 8006b6a: 2317 movs r3, #23 - 8006b6c: 18fb adds r3, r7, r3 - 8006b6e: 2200 movs r2, #0 - 8006b70: 701a strb r2, [r3, #0] - uint32_t tmp_config_internal_channel; - __IO uint32_t wait_loop_index = 0UL; - 8006b72: 2300 movs r3, #0 - 8006b74: 60fb str r3, [r7, #12] - assert_param(IS_ADC_REGULAR_NB_CONV(hadc->Init.NbrOfConversion)); - - assert_param(IS_ADC_REGULAR_RANK(pConfig->Rank)); - } - - __HAL_LOCK(hadc); - 8006b76: 687b ldr r3, [r7, #4] - 8006b78: 2254 movs r2, #84 ; 0x54 - 8006b7a: 5c9b ldrb r3, [r3, r2] - 8006b7c: 2b01 cmp r3, #1 - 8006b7e: d101 bne.n 8006b84 - 8006b80: 2302 movs r3, #2 - 8006b82: e1c0 b.n 8006f06 - 8006b84: 687b ldr r3, [r7, #4] - 8006b86: 2254 movs r2, #84 ; 0x54 - 8006b88: 2101 movs r1, #1 - 8006b8a: 5499 strb r1, [r3, r2] - /* Parameters that can be updated when ADC is disabled or enabled without */ - /* conversion on going on regular group: */ - /* - Channel number */ - /* - Channel sampling time */ - /* - Management of internal measurement channels: VrefInt/TempSensor/Vbat */ - if (LL_ADC_REG_IsConversionOngoing(hadc->Instance) == 0UL) - 8006b8c: 687b ldr r3, [r7, #4] - 8006b8e: 681b ldr r3, [r3, #0] - 8006b90: 0018 movs r0, r3 - 8006b92: f7ff fd01 bl 8006598 - 8006b96: 1e03 subs r3, r0, #0 - 8006b98: d000 beq.n 8006b9c - 8006b9a: e1a3 b.n 8006ee4 - /* If sequencer set to not fully configurable with channel rank set to */ - /* none, remove the channel from the sequencer. */ - /* Otherwise (sequencer set to fully configurable or to to not fully */ - /* configurable with channel rank to be set), configure the selected */ - /* channel. */ - if (pConfig->Rank != ADC_RANK_NONE) - 8006b9c: 683b ldr r3, [r7, #0] - 8006b9e: 685b ldr r3, [r3, #4] - 8006ba0: 2b02 cmp r3, #2 - 8006ba2: d100 bne.n 8006ba6 - 8006ba4: e143 b.n 8006e2e - /* Note: ADC channel configuration requires few ADC clock cycles */ - /* to be ready. Processing of ADC settings in this function */ - /* induce that a specific wait time is not necessary. */ - /* For more details on ADC channel configuration ready, */ - /* refer to function "LL_ADC_IsActiveFlag_CCRDY()". */ - if ((hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED) || - 8006ba6: 687b ldr r3, [r7, #4] - 8006ba8: 691a ldr r2, [r3, #16] - 8006baa: 2380 movs r3, #128 ; 0x80 - 8006bac: 061b lsls r3, r3, #24 - 8006bae: 429a cmp r2, r3 - 8006bb0: d004 beq.n 8006bbc - (hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED_BACKWARD)) - 8006bb2: 687b ldr r3, [r7, #4] - 8006bb4: 691b ldr r3, [r3, #16] - if ((hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED) || - 8006bb6: 4ac1 ldr r2, [pc, #772] ; (8006ebc ) - 8006bb8: 4293 cmp r3, r2 - 8006bba: d108 bne.n 8006bce - { - /* Sequencer set to not fully configurable: */ - /* Set the channel by enabling the corresponding bitfield. */ - LL_ADC_REG_SetSequencerChAdd(hadc->Instance, pConfig->Channel); - 8006bbc: 687b ldr r3, [r7, #4] - 8006bbe: 681a ldr r2, [r3, #0] - 8006bc0: 683b ldr r3, [r7, #0] - 8006bc2: 681b ldr r3, [r3, #0] - 8006bc4: 0019 movs r1, r3 - 8006bc6: 0010 movs r0, r2 - 8006bc8: f7ff fc14 bl 80063f4 - 8006bcc: e0c9 b.n 8006d62 - { - /* Sequencer set to fully configurable: */ - /* Set the channel by entering it into the selected rank. */ - - /* Memorize the channel set into variable in HAL ADC handle */ - MODIFY_REG(hadc->ADCGroupRegularSequencerRanks, - 8006bce: 687b ldr r3, [r7, #4] - 8006bd0: 6e1a ldr r2, [r3, #96] ; 0x60 - 8006bd2: 683b ldr r3, [r7, #0] - 8006bd4: 685b ldr r3, [r3, #4] - 8006bd6: 211f movs r1, #31 - 8006bd8: 400b ands r3, r1 - 8006bda: 210f movs r1, #15 - 8006bdc: 4099 lsls r1, r3 - 8006bde: 000b movs r3, r1 - 8006be0: 43db mvns r3, r3 - 8006be2: 4013 ands r3, r2 - 8006be4: 0019 movs r1, r3 - 8006be6: 683b ldr r3, [r7, #0] - 8006be8: 681b ldr r3, [r3, #0] - 8006bea: 035b lsls r3, r3, #13 - 8006bec: 0b5b lsrs r3, r3, #13 - 8006bee: d105 bne.n 8006bfc - 8006bf0: 683b ldr r3, [r7, #0] - 8006bf2: 681b ldr r3, [r3, #0] - 8006bf4: 0e9b lsrs r3, r3, #26 - 8006bf6: 221f movs r2, #31 - 8006bf8: 4013 ands r3, r2 - 8006bfa: e098 b.n 8006d2e - 8006bfc: 683b ldr r3, [r7, #0] - 8006bfe: 681b ldr r3, [r3, #0] - 8006c00: 2201 movs r2, #1 - 8006c02: 4013 ands r3, r2 - 8006c04: d000 beq.n 8006c08 - 8006c06: e091 b.n 8006d2c - 8006c08: 683b ldr r3, [r7, #0] - 8006c0a: 681b ldr r3, [r3, #0] - 8006c0c: 2202 movs r2, #2 - 8006c0e: 4013 ands r3, r2 - 8006c10: d000 beq.n 8006c14 - 8006c12: e089 b.n 8006d28 - 8006c14: 683b ldr r3, [r7, #0] - 8006c16: 681b ldr r3, [r3, #0] - 8006c18: 2204 movs r2, #4 - 8006c1a: 4013 ands r3, r2 - 8006c1c: d000 beq.n 8006c20 - 8006c1e: e081 b.n 8006d24 - 8006c20: 683b ldr r3, [r7, #0] - 8006c22: 681b ldr r3, [r3, #0] - 8006c24: 2208 movs r2, #8 - 8006c26: 4013 ands r3, r2 - 8006c28: d000 beq.n 8006c2c - 8006c2a: e079 b.n 8006d20 - 8006c2c: 683b ldr r3, [r7, #0] - 8006c2e: 681b ldr r3, [r3, #0] - 8006c30: 2210 movs r2, #16 - 8006c32: 4013 ands r3, r2 - 8006c34: d000 beq.n 8006c38 - 8006c36: e071 b.n 8006d1c - 8006c38: 683b ldr r3, [r7, #0] - 8006c3a: 681b ldr r3, [r3, #0] - 8006c3c: 2220 movs r2, #32 - 8006c3e: 4013 ands r3, r2 - 8006c40: d000 beq.n 8006c44 - 8006c42: e069 b.n 8006d18 - 8006c44: 683b ldr r3, [r7, #0] - 8006c46: 681b ldr r3, [r3, #0] - 8006c48: 2240 movs r2, #64 ; 0x40 - 8006c4a: 4013 ands r3, r2 - 8006c4c: d000 beq.n 8006c50 - 8006c4e: e061 b.n 8006d14 - 8006c50: 683b ldr r3, [r7, #0] - 8006c52: 681b ldr r3, [r3, #0] - 8006c54: 2280 movs r2, #128 ; 0x80 - 8006c56: 4013 ands r3, r2 - 8006c58: d000 beq.n 8006c5c - 8006c5a: e059 b.n 8006d10 - 8006c5c: 683b ldr r3, [r7, #0] - 8006c5e: 681a ldr r2, [r3, #0] - 8006c60: 2380 movs r3, #128 ; 0x80 - 8006c62: 005b lsls r3, r3, #1 - 8006c64: 4013 ands r3, r2 - 8006c66: d151 bne.n 8006d0c - 8006c68: 683b ldr r3, [r7, #0] - 8006c6a: 681a ldr r2, [r3, #0] - 8006c6c: 2380 movs r3, #128 ; 0x80 - 8006c6e: 009b lsls r3, r3, #2 - 8006c70: 4013 ands r3, r2 - 8006c72: d149 bne.n 8006d08 - 8006c74: 683b ldr r3, [r7, #0] - 8006c76: 681a ldr r2, [r3, #0] - 8006c78: 2380 movs r3, #128 ; 0x80 - 8006c7a: 00db lsls r3, r3, #3 - 8006c7c: 4013 ands r3, r2 - 8006c7e: d141 bne.n 8006d04 - 8006c80: 683b ldr r3, [r7, #0] - 8006c82: 681a ldr r2, [r3, #0] - 8006c84: 2380 movs r3, #128 ; 0x80 - 8006c86: 011b lsls r3, r3, #4 - 8006c88: 4013 ands r3, r2 - 8006c8a: d139 bne.n 8006d00 - 8006c8c: 683b ldr r3, [r7, #0] - 8006c8e: 681a ldr r2, [r3, #0] - 8006c90: 2380 movs r3, #128 ; 0x80 - 8006c92: 015b lsls r3, r3, #5 - 8006c94: 4013 ands r3, r2 - 8006c96: d131 bne.n 8006cfc - 8006c98: 683b ldr r3, [r7, #0] - 8006c9a: 681a ldr r2, [r3, #0] - 8006c9c: 2380 movs r3, #128 ; 0x80 - 8006c9e: 019b lsls r3, r3, #6 - 8006ca0: 4013 ands r3, r2 - 8006ca2: d129 bne.n 8006cf8 - 8006ca4: 683b ldr r3, [r7, #0] - 8006ca6: 681a ldr r2, [r3, #0] - 8006ca8: 2380 movs r3, #128 ; 0x80 - 8006caa: 01db lsls r3, r3, #7 - 8006cac: 4013 ands r3, r2 - 8006cae: d121 bne.n 8006cf4 - 8006cb0: 683b ldr r3, [r7, #0] - 8006cb2: 681a ldr r2, [r3, #0] - 8006cb4: 2380 movs r3, #128 ; 0x80 - 8006cb6: 021b lsls r3, r3, #8 - 8006cb8: 4013 ands r3, r2 - 8006cba: d119 bne.n 8006cf0 - 8006cbc: 683b ldr r3, [r7, #0] - 8006cbe: 681a ldr r2, [r3, #0] - 8006cc0: 2380 movs r3, #128 ; 0x80 - 8006cc2: 025b lsls r3, r3, #9 - 8006cc4: 4013 ands r3, r2 - 8006cc6: d111 bne.n 8006cec - 8006cc8: 683b ldr r3, [r7, #0] - 8006cca: 681a ldr r2, [r3, #0] - 8006ccc: 2380 movs r3, #128 ; 0x80 - 8006cce: 029b lsls r3, r3, #10 - 8006cd0: 4013 ands r3, r2 - 8006cd2: d109 bne.n 8006ce8 - 8006cd4: 683b ldr r3, [r7, #0] - 8006cd6: 681a ldr r2, [r3, #0] - 8006cd8: 2380 movs r3, #128 ; 0x80 - 8006cda: 02db lsls r3, r3, #11 - 8006cdc: 4013 ands r3, r2 - 8006cde: d001 beq.n 8006ce4 - 8006ce0: 2312 movs r3, #18 - 8006ce2: e024 b.n 8006d2e - 8006ce4: 2300 movs r3, #0 - 8006ce6: e022 b.n 8006d2e - 8006ce8: 2311 movs r3, #17 - 8006cea: e020 b.n 8006d2e - 8006cec: 2310 movs r3, #16 - 8006cee: e01e b.n 8006d2e - 8006cf0: 230f movs r3, #15 - 8006cf2: e01c b.n 8006d2e - 8006cf4: 230e movs r3, #14 - 8006cf6: e01a b.n 8006d2e - 8006cf8: 230d movs r3, #13 - 8006cfa: e018 b.n 8006d2e - 8006cfc: 230c movs r3, #12 - 8006cfe: e016 b.n 8006d2e - 8006d00: 230b movs r3, #11 - 8006d02: e014 b.n 8006d2e - 8006d04: 230a movs r3, #10 - 8006d06: e012 b.n 8006d2e - 8006d08: 2309 movs r3, #9 - 8006d0a: e010 b.n 8006d2e - 8006d0c: 2308 movs r3, #8 - 8006d0e: e00e b.n 8006d2e - 8006d10: 2307 movs r3, #7 - 8006d12: e00c b.n 8006d2e - 8006d14: 2306 movs r3, #6 - 8006d16: e00a b.n 8006d2e - 8006d18: 2305 movs r3, #5 - 8006d1a: e008 b.n 8006d2e - 8006d1c: 2304 movs r3, #4 - 8006d1e: e006 b.n 8006d2e - 8006d20: 2303 movs r3, #3 - 8006d22: e004 b.n 8006d2e - 8006d24: 2302 movs r3, #2 - 8006d26: e002 b.n 8006d2e - 8006d28: 2301 movs r3, #1 - 8006d2a: e000 b.n 8006d2e - 8006d2c: 2300 movs r3, #0 - 8006d2e: 683a ldr r2, [r7, #0] - 8006d30: 6852 ldr r2, [r2, #4] - 8006d32: 201f movs r0, #31 - 8006d34: 4002 ands r2, r0 - 8006d36: 4093 lsls r3, r2 - 8006d38: 000a movs r2, r1 - 8006d3a: 431a orrs r2, r3 - 8006d3c: 687b ldr r3, [r7, #4] - 8006d3e: 661a str r2, [r3, #96] ; 0x60 - - /* If the selected rank is below ADC group regular sequencer length, */ - /* apply the configuration in ADC register. */ - /* Note: Otherwise, configuration is not applied. */ - /* To apply it, parameter'NbrOfConversion' must be increased. */ - if (((pConfig->Rank >> 2UL) + 1UL) <= hadc->Init.NbrOfConversion) - 8006d40: 683b ldr r3, [r7, #0] - 8006d42: 685b ldr r3, [r3, #4] - 8006d44: 089b lsrs r3, r3, #2 - 8006d46: 1c5a adds r2, r3, #1 - 8006d48: 687b ldr r3, [r7, #4] - 8006d4a: 69db ldr r3, [r3, #28] - 8006d4c: 429a cmp r2, r3 - 8006d4e: d808 bhi.n 8006d62 - { - LL_ADC_REG_SetSequencerRanks(hadc->Instance, pConfig->Rank, pConfig->Channel); - 8006d50: 687b ldr r3, [r7, #4] - 8006d52: 6818 ldr r0, [r3, #0] - 8006d54: 683b ldr r3, [r7, #0] - 8006d56: 6859 ldr r1, [r3, #4] - 8006d58: 683b ldr r3, [r7, #0] - 8006d5a: 681b ldr r3, [r3, #0] - 8006d5c: 001a movs r2, r3 - 8006d5e: f7ff fb29 bl 80063b4 - } - } - - /* Set sampling time of the selected ADC channel */ - LL_ADC_SetChannelSamplingTime(hadc->Instance, pConfig->Channel, pConfig->SamplingTime); - 8006d62: 687b ldr r3, [r7, #4] - 8006d64: 6818 ldr r0, [r3, #0] - 8006d66: 683b ldr r3, [r7, #0] - 8006d68: 6819 ldr r1, [r3, #0] - 8006d6a: 683b ldr r3, [r7, #0] - 8006d6c: 689b ldr r3, [r3, #8] - 8006d6e: 001a movs r2, r3 - 8006d70: f7ff fb64 bl 800643c - /* internal measurement paths enable: If internal channel selected, */ - /* enable dedicated internal buffers and path. */ - /* Note: these internal measurement paths can be disabled using */ - /* HAL_ADC_DeInit() or removing the channel from sequencer with */ - /* channel configuration parameter "Rank". */ - if (__LL_ADC_IS_CHANNEL_INTERNAL(pConfig->Channel)) - 8006d74: 683b ldr r3, [r7, #0] - 8006d76: 681b ldr r3, [r3, #0] - 8006d78: 2b00 cmp r3, #0 - 8006d7a: db00 blt.n 8006d7e - 8006d7c: e0bc b.n 8006ef8 - { - tmp_config_internal_channel = LL_ADC_GetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance)); - 8006d7e: 4b50 ldr r3, [pc, #320] ; (8006ec0 ) - 8006d80: 0018 movs r0, r3 - 8006d82: f7ff fac5 bl 8006310 - 8006d86: 0003 movs r3, r0 - 8006d88: 613b str r3, [r7, #16] - - /* If the requested internal measurement path has already been enabled, */ - /* bypass the configuration processing. */ - if ((pConfig->Channel == ADC_CHANNEL_TEMPSENSOR) && - 8006d8a: 683b ldr r3, [r7, #0] - 8006d8c: 681b ldr r3, [r3, #0] - 8006d8e: 4a4d ldr r2, [pc, #308] ; (8006ec4 ) - 8006d90: 4293 cmp r3, r2 - 8006d92: d122 bne.n 8006dda - ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_TEMPSENSOR) == 0UL)) - 8006d94: 693a ldr r2, [r7, #16] - 8006d96: 2380 movs r3, #128 ; 0x80 - 8006d98: 041b lsls r3, r3, #16 - 8006d9a: 4013 ands r3, r2 - if ((pConfig->Channel == ADC_CHANNEL_TEMPSENSOR) && - 8006d9c: d11d bne.n 8006dda - { - LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), - 8006d9e: 693b ldr r3, [r7, #16] - 8006da0: 2280 movs r2, #128 ; 0x80 - 8006da2: 0412 lsls r2, r2, #16 - 8006da4: 4313 orrs r3, r2 - 8006da6: 4a46 ldr r2, [pc, #280] ; (8006ec0 ) - 8006da8: 0019 movs r1, r3 - 8006daa: 0010 movs r0, r2 - 8006dac: f7ff fa9c bl 80062e8 - /* Delay for temperature sensor stabilization time */ - /* Wait loop initialization and execution */ - /* Note: Variable divided by 2 to compensate partially */ - /* CPU processing cycles, scaling in us split to not */ - /* exceed 32 bits register capacity and handle low frequency. */ - wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_STAB_US / 10UL) * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); - 8006db0: 4b45 ldr r3, [pc, #276] ; (8006ec8 ) - 8006db2: 681b ldr r3, [r3, #0] - 8006db4: 4945 ldr r1, [pc, #276] ; (8006ecc ) - 8006db6: 0018 movs r0, r3 - 8006db8: f7f9 f9b8 bl 800012c <__udivsi3> - 8006dbc: 0003 movs r3, r0 - 8006dbe: 1c5a adds r2, r3, #1 - 8006dc0: 0013 movs r3, r2 - 8006dc2: 005b lsls r3, r3, #1 - 8006dc4: 189b adds r3, r3, r2 - 8006dc6: 009b lsls r3, r3, #2 - 8006dc8: 60fb str r3, [r7, #12] - while (wait_loop_index != 0UL) - 8006dca: e002 b.n 8006dd2 - { - wait_loop_index--; - 8006dcc: 68fb ldr r3, [r7, #12] - 8006dce: 3b01 subs r3, #1 - 8006dd0: 60fb str r3, [r7, #12] - while (wait_loop_index != 0UL) - 8006dd2: 68fb ldr r3, [r7, #12] - 8006dd4: 2b00 cmp r3, #0 - 8006dd6: d1f9 bne.n 8006dcc - if ((pConfig->Channel == ADC_CHANNEL_TEMPSENSOR) && - 8006dd8: e08e b.n 8006ef8 - } - } - else if ((pConfig->Channel == ADC_CHANNEL_VBAT) - 8006dda: 683b ldr r3, [r7, #0] - 8006ddc: 681b ldr r3, [r3, #0] - 8006dde: 4a3c ldr r2, [pc, #240] ; (8006ed0 ) - 8006de0: 4293 cmp r3, r2 - 8006de2: d10e bne.n 8006e02 - && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VBAT) == 0UL)) - 8006de4: 693a ldr r2, [r7, #16] - 8006de6: 2380 movs r3, #128 ; 0x80 - 8006de8: 045b lsls r3, r3, #17 - 8006dea: 4013 ands r3, r2 - 8006dec: d109 bne.n 8006e02 - { - LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), - 8006dee: 693b ldr r3, [r7, #16] - 8006df0: 2280 movs r2, #128 ; 0x80 - 8006df2: 0452 lsls r2, r2, #17 - 8006df4: 4313 orrs r3, r2 - 8006df6: 4a32 ldr r2, [pc, #200] ; (8006ec0 ) - 8006df8: 0019 movs r1, r3 - 8006dfa: 0010 movs r0, r2 - 8006dfc: f7ff fa74 bl 80062e8 - 8006e00: e07a b.n 8006ef8 - LL_ADC_PATH_INTERNAL_VBAT | tmp_config_internal_channel); - } - else if ((pConfig->Channel == ADC_CHANNEL_VREFINT) && - 8006e02: 683b ldr r3, [r7, #0] - 8006e04: 681b ldr r3, [r3, #0] - 8006e06: 4a33 ldr r2, [pc, #204] ; (8006ed4 ) - 8006e08: 4293 cmp r3, r2 - 8006e0a: d000 beq.n 8006e0e - 8006e0c: e074 b.n 8006ef8 - ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VREFINT) == 0UL)) - 8006e0e: 693a ldr r2, [r7, #16] - 8006e10: 2380 movs r3, #128 ; 0x80 - 8006e12: 03db lsls r3, r3, #15 - 8006e14: 4013 ands r3, r2 - else if ((pConfig->Channel == ADC_CHANNEL_VREFINT) && - 8006e16: d000 beq.n 8006e1a - 8006e18: e06e b.n 8006ef8 - { - LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), - 8006e1a: 693b ldr r3, [r7, #16] - 8006e1c: 2280 movs r2, #128 ; 0x80 - 8006e1e: 03d2 lsls r2, r2, #15 - 8006e20: 4313 orrs r3, r2 - 8006e22: 4a27 ldr r2, [pc, #156] ; (8006ec0 ) - 8006e24: 0019 movs r1, r3 - 8006e26: 0010 movs r0, r2 - 8006e28: f7ff fa5e bl 80062e8 - 8006e2c: e064 b.n 8006ef8 - /* Regular sequencer configuration */ - /* Note: Case of sequencer set to fully configurable: */ - /* Sequencer rank cannot be disabled, only affected to */ - /* another channel. */ - /* To remove a rank, use parameter 'NbrOfConversion". */ - if ((hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED) || - 8006e2e: 687b ldr r3, [r7, #4] - 8006e30: 691a ldr r2, [r3, #16] - 8006e32: 2380 movs r3, #128 ; 0x80 - 8006e34: 061b lsls r3, r3, #24 - 8006e36: 429a cmp r2, r3 - 8006e38: d004 beq.n 8006e44 - (hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED_BACKWARD)) - 8006e3a: 687b ldr r3, [r7, #4] - 8006e3c: 691b ldr r3, [r3, #16] - if ((hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED) || - 8006e3e: 4a1f ldr r2, [pc, #124] ; (8006ebc ) - 8006e40: 4293 cmp r3, r2 - 8006e42: d107 bne.n 8006e54 - { - /* Sequencer set to not fully configurable: */ - /* Reset the channel by disabling the corresponding bitfield. */ - LL_ADC_REG_SetSequencerChRem(hadc->Instance, pConfig->Channel); - 8006e44: 687b ldr r3, [r7, #4] - 8006e46: 681a ldr r2, [r3, #0] - 8006e48: 683b ldr r3, [r7, #0] - 8006e4a: 681b ldr r3, [r3, #0] - 8006e4c: 0019 movs r1, r3 - 8006e4e: 0010 movs r0, r2 - 8006e50: f7ff fae1 bl 8006416 - } - - /* Management of internal measurement channels: Vbat/VrefInt/TempSensor. */ - /* If internal channel selected, enable dedicated internal buffers and */ - /* paths. */ - if (__LL_ADC_IS_CHANNEL_INTERNAL(pConfig->Channel)) - 8006e54: 683b ldr r3, [r7, #0] - 8006e56: 681b ldr r3, [r3, #0] - 8006e58: 2b00 cmp r3, #0 - 8006e5a: da4d bge.n 8006ef8 - { - tmp_config_internal_channel = LL_ADC_GetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance)); - 8006e5c: 4b18 ldr r3, [pc, #96] ; (8006ec0 ) - 8006e5e: 0018 movs r0, r3 - 8006e60: f7ff fa56 bl 8006310 - 8006e64: 0003 movs r3, r0 - 8006e66: 613b str r3, [r7, #16] - - if (pConfig->Channel == ADC_CHANNEL_TEMPSENSOR) - 8006e68: 683b ldr r3, [r7, #0] - 8006e6a: 681b ldr r3, [r3, #0] - 8006e6c: 4a15 ldr r2, [pc, #84] ; (8006ec4 ) - 8006e6e: 4293 cmp r3, r2 - 8006e70: d108 bne.n 8006e84 - { - LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), - 8006e72: 693b ldr r3, [r7, #16] - 8006e74: 4a18 ldr r2, [pc, #96] ; (8006ed8 ) - 8006e76: 4013 ands r3, r2 - 8006e78: 4a11 ldr r2, [pc, #68] ; (8006ec0 ) - 8006e7a: 0019 movs r1, r3 - 8006e7c: 0010 movs r0, r2 - 8006e7e: f7ff fa33 bl 80062e8 - 8006e82: e039 b.n 8006ef8 - ~LL_ADC_PATH_INTERNAL_TEMPSENSOR & tmp_config_internal_channel); - } - else if (pConfig->Channel == ADC_CHANNEL_VBAT) - 8006e84: 683b ldr r3, [r7, #0] - 8006e86: 681b ldr r3, [r3, #0] - 8006e88: 4a11 ldr r2, [pc, #68] ; (8006ed0 ) - 8006e8a: 4293 cmp r3, r2 - 8006e8c: d108 bne.n 8006ea0 - { - LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), - 8006e8e: 693b ldr r3, [r7, #16] - 8006e90: 4a12 ldr r2, [pc, #72] ; (8006edc ) - 8006e92: 4013 ands r3, r2 - 8006e94: 4a0a ldr r2, [pc, #40] ; (8006ec0 ) - 8006e96: 0019 movs r1, r3 - 8006e98: 0010 movs r0, r2 - 8006e9a: f7ff fa25 bl 80062e8 - 8006e9e: e02b b.n 8006ef8 - ~LL_ADC_PATH_INTERNAL_VBAT & tmp_config_internal_channel); - } - else if (pConfig->Channel == ADC_CHANNEL_VREFINT) - 8006ea0: 683b ldr r3, [r7, #0] - 8006ea2: 681b ldr r3, [r3, #0] - 8006ea4: 4a0b ldr r2, [pc, #44] ; (8006ed4 ) - 8006ea6: 4293 cmp r3, r2 - 8006ea8: d126 bne.n 8006ef8 - { - LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), - 8006eaa: 693b ldr r3, [r7, #16] - 8006eac: 4a0c ldr r2, [pc, #48] ; (8006ee0 ) - 8006eae: 4013 ands r3, r2 - 8006eb0: 4a03 ldr r2, [pc, #12] ; (8006ec0 ) - 8006eb2: 0019 movs r1, r3 - 8006eb4: 0010 movs r0, r2 - 8006eb6: f7ff fa17 bl 80062e8 - 8006eba: e01d b.n 8006ef8 - 8006ebc: 80000004 .word 0x80000004 - 8006ec0: 40012708 .word 0x40012708 - 8006ec4: b0001000 .word 0xb0001000 - 8006ec8: 20000040 .word 0x20000040 - 8006ecc: 00030d40 .word 0x00030d40 - 8006ed0: b8004000 .word 0xb8004000 - 8006ed4: b4002000 .word 0xb4002000 - 8006ed8: ff7fffff .word 0xff7fffff - 8006edc: feffffff .word 0xfeffffff - 8006ee0: ffbfffff .word 0xffbfffff - /* channel could be done on neither of the channel configuration structure */ - /* parameters. */ - else - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8006ee4: 687b ldr r3, [r7, #4] - 8006ee6: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006ee8: 2220 movs r2, #32 - 8006eea: 431a orrs r2, r3 - 8006eec: 687b ldr r3, [r7, #4] - 8006eee: 659a str r2, [r3, #88] ; 0x58 - - tmp_hal_status = HAL_ERROR; - 8006ef0: 2317 movs r3, #23 - 8006ef2: 18fb adds r3, r7, r3 - 8006ef4: 2201 movs r2, #1 - 8006ef6: 701a strb r2, [r3, #0] - } - - __HAL_UNLOCK(hadc); - 8006ef8: 687b ldr r3, [r7, #4] - 8006efa: 2254 movs r2, #84 ; 0x54 - 8006efc: 2100 movs r1, #0 - 8006efe: 5499 strb r1, [r3, r2] - - return tmp_hal_status; - 8006f00: 2317 movs r3, #23 - 8006f02: 18fb adds r3, r7, r3 - 8006f04: 781b ldrb r3, [r3, #0] -} - 8006f06: 0018 movs r0, r3 - 8006f08: 46bd mov sp, r7 - 8006f0a: b006 add sp, #24 - 8006f0c: bd80 pop {r7, pc} - 8006f0e: 46c0 nop ; (mov r8, r8) - -08006f10 : - * stopped to disable the ADC. - * @param hadc ADC handle - * @retval HAL status. - */ -HAL_StatusTypeDef ADC_ConversionStop(ADC_HandleTypeDef *hadc) -{ - 8006f10: b580 push {r7, lr} - 8006f12: b084 sub sp, #16 - 8006f14: af00 add r7, sp, #0 - 8006f16: 6078 str r0, [r7, #4] - /* Check the parameters */ - assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); - - /* Verification if ADC is not already stopped on regular group to bypass */ - /* this function if not needed. */ - if (LL_ADC_REG_IsConversionOngoing(hadc->Instance) != 0UL) - 8006f18: 687b ldr r3, [r7, #4] - 8006f1a: 681b ldr r3, [r3, #0] - 8006f1c: 0018 movs r0, r3 - 8006f1e: f7ff fb3b bl 8006598 - 8006f22: 1e03 subs r3, r0, #0 - 8006f24: d031 beq.n 8006f8a - { - /* Stop potential conversion on going on regular group */ - /* Software is allowed to set ADSTP only when ADSTART=1 and ADDIS=0 */ - if (LL_ADC_IsDisableOngoing(hadc->Instance) == 0UL) - 8006f26: 687b ldr r3, [r7, #4] - 8006f28: 681b ldr r3, [r3, #0] - 8006f2a: 0018 movs r0, r3 - 8006f2c: f7ff faff bl 800652e - 8006f30: 1e03 subs r3, r0, #0 - 8006f32: d104 bne.n 8006f3e - { - /* Stop ADC group regular conversion */ - LL_ADC_REG_StopConversion(hadc->Instance); - 8006f34: 687b ldr r3, [r7, #4] - 8006f36: 681b ldr r3, [r3, #0] - 8006f38: 0018 movs r0, r3 - 8006f3a: f7ff fb1b bl 8006574 - } - - /* Wait for conversion effectively stopped */ - /* Get tick count */ - tickstart = HAL_GetTick(); - 8006f3e: f7ff f98f bl 8006260 - 8006f42: 0003 movs r3, r0 - 8006f44: 60fb str r3, [r7, #12] - - while ((hadc->Instance->CR & ADC_CR_ADSTART) != 0UL) - 8006f46: e01a b.n 8006f7e - { - if ((HAL_GetTick() - tickstart) > ADC_STOP_CONVERSION_TIMEOUT) - 8006f48: f7ff f98a bl 8006260 - 8006f4c: 0002 movs r2, r0 - 8006f4e: 68fb ldr r3, [r7, #12] - 8006f50: 1ad3 subs r3, r2, r3 - 8006f52: 2b02 cmp r3, #2 - 8006f54: d913 bls.n 8006f7e - { - /* New check to avoid false timeout detection in case of preemption */ - if ((hadc->Instance->CR & ADC_CR_ADSTART) != 0UL) - 8006f56: 687b ldr r3, [r7, #4] - 8006f58: 681b ldr r3, [r3, #0] - 8006f5a: 689b ldr r3, [r3, #8] - 8006f5c: 2204 movs r2, #4 - 8006f5e: 4013 ands r3, r2 - 8006f60: d00d beq.n 8006f7e - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8006f62: 687b ldr r3, [r7, #4] - 8006f64: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006f66: 2210 movs r2, #16 - 8006f68: 431a orrs r2, r3 - 8006f6a: 687b ldr r3, [r7, #4] - 8006f6c: 659a str r2, [r3, #88] ; 0x58 - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8006f6e: 687b ldr r3, [r7, #4] - 8006f70: 6ddb ldr r3, [r3, #92] ; 0x5c - 8006f72: 2201 movs r2, #1 - 8006f74: 431a orrs r2, r3 - 8006f76: 687b ldr r3, [r7, #4] - 8006f78: 65da str r2, [r3, #92] ; 0x5c - - return HAL_ERROR; - 8006f7a: 2301 movs r3, #1 - 8006f7c: e006 b.n 8006f8c - while ((hadc->Instance->CR & ADC_CR_ADSTART) != 0UL) - 8006f7e: 687b ldr r3, [r7, #4] - 8006f80: 681b ldr r3, [r3, #0] - 8006f82: 689b ldr r3, [r3, #8] - 8006f84: 2204 movs r2, #4 - 8006f86: 4013 ands r3, r2 - 8006f88: d1de bne.n 8006f48 - } - - } - - /* Return HAL status */ - return HAL_OK; - 8006f8a: 2300 movs r3, #0 -} - 8006f8c: 0018 movs r0, r3 - 8006f8e: 46bd mov sp, r7 - 8006f90: b004 add sp, #16 - 8006f92: bd80 pop {r7, pc} - -08006f94 : - * and voltage regulator must be enabled (done into HAL_ADC_Init()). - * @param hadc ADC handle - * @retval HAL status. - */ -HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef *hadc) -{ - 8006f94: b580 push {r7, lr} - 8006f96: b084 sub sp, #16 - 8006f98: af00 add r7, sp, #0 - 8006f9a: 6078 str r0, [r7, #4] - uint32_t tickstart; - __IO uint32_t wait_loop_index = 0UL; - 8006f9c: 2300 movs r3, #0 - 8006f9e: 60bb str r3, [r7, #8] - - /* ADC enable and wait for ADC ready (in case of ADC is disabled or */ - /* enabling phase not yet completed: flag ADC ready not yet set). */ - /* Timeout implemented to not be stuck if ADC cannot be enabled (possible */ - /* causes: ADC clock not running, ...). */ - if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) - 8006fa0: 687b ldr r3, [r7, #4] - 8006fa2: 681b ldr r3, [r3, #0] - 8006fa4: 0018 movs r0, r3 - 8006fa6: f7ff fab1 bl 800650c - 8006faa: 1e03 subs r3, r0, #0 - 8006fac: d000 beq.n 8006fb0 - 8006fae: e069 b.n 8007084 - { - /* Check if conditions to enable the ADC are fulfilled */ - if ((hadc->Instance->CR & (ADC_CR_ADCAL | ADC_CR_ADSTP | ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN)) != 0UL) - 8006fb0: 687b ldr r3, [r7, #4] - 8006fb2: 681b ldr r3, [r3, #0] - 8006fb4: 689b ldr r3, [r3, #8] - 8006fb6: 4a36 ldr r2, [pc, #216] ; (8007090 ) - 8006fb8: 4013 ands r3, r2 - 8006fba: d00d beq.n 8006fd8 - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8006fbc: 687b ldr r3, [r7, #4] - 8006fbe: 6d9b ldr r3, [r3, #88] ; 0x58 - 8006fc0: 2210 movs r2, #16 - 8006fc2: 431a orrs r2, r3 - 8006fc4: 687b ldr r3, [r7, #4] - 8006fc6: 659a str r2, [r3, #88] ; 0x58 - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8006fc8: 687b ldr r3, [r7, #4] - 8006fca: 6ddb ldr r3, [r3, #92] ; 0x5c - 8006fcc: 2201 movs r2, #1 - 8006fce: 431a orrs r2, r3 - 8006fd0: 687b ldr r3, [r7, #4] - 8006fd2: 65da str r2, [r3, #92] ; 0x5c - - return HAL_ERROR; - 8006fd4: 2301 movs r3, #1 - 8006fd6: e056 b.n 8007086 - } - - /* Enable the ADC peripheral */ - LL_ADC_Enable(hadc->Instance); - 8006fd8: 687b ldr r3, [r7, #4] - 8006fda: 681b ldr r3, [r3, #0] - 8006fdc: 0018 movs r0, r3 - 8006fde: f7ff fa71 bl 80064c4 - - if ((LL_ADC_GetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance)) & LL_ADC_PATH_INTERNAL_TEMPSENSOR) - 8006fe2: 4b2c ldr r3, [pc, #176] ; (8007094 ) - 8006fe4: 0018 movs r0, r3 - 8006fe6: f7ff f993 bl 8006310 - 8006fea: 0002 movs r2, r0 - 8006fec: 2380 movs r3, #128 ; 0x80 - 8006fee: 041b lsls r3, r3, #16 - 8006ff0: 4013 ands r3, r2 - 8006ff2: d00f beq.n 8007014 - /* Wait loop initialization and execution */ - /* Note: Variable divided by 2 to compensate partially */ - /* CPU processing cycles, scaling in us split to not */ - /* exceed 32 bits register capacity and handle low frequency. */ - wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_BUFFER_STAB_US / 10UL) - * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); - 8006ff4: 4b28 ldr r3, [pc, #160] ; (8007098 ) - 8006ff6: 681b ldr r3, [r3, #0] - 8006ff8: 4928 ldr r1, [pc, #160] ; (800709c ) - 8006ffa: 0018 movs r0, r3 - 8006ffc: f7f9 f896 bl 800012c <__udivsi3> - 8007000: 0003 movs r3, r0 - 8007002: 3301 adds r3, #1 - wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_BUFFER_STAB_US / 10UL) - 8007004: 60bb str r3, [r7, #8] - while (wait_loop_index != 0UL) - 8007006: e002 b.n 800700e - { - wait_loop_index--; - 8007008: 68bb ldr r3, [r7, #8] - 800700a: 3b01 subs r3, #1 - 800700c: 60bb str r3, [r7, #8] - while (wait_loop_index != 0UL) - 800700e: 68bb ldr r3, [r7, #8] - 8007010: 2b00 cmp r3, #0 - 8007012: d1f9 bne.n 8007008 - } - } - - /* If low power mode AutoPowerOff is enabled, power-on/off phases are */ - /* performed automatically by hardware and flag ADC ready is not set. */ - if (hadc->Init.LowPowerAutoPowerOff != ENABLE) - 8007014: 687b ldr r3, [r7, #4] - 8007016: 7e5b ldrb r3, [r3, #25] - 8007018: 2b01 cmp r3, #1 - 800701a: d033 beq.n 8007084 - { - /* Wait for ADC effectively enabled */ - tickstart = HAL_GetTick(); - 800701c: f7ff f920 bl 8006260 - 8007020: 0003 movs r3, r0 - 8007022: 60fb str r3, [r7, #12] - - while (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_RDY) == 0UL) - 8007024: e027 b.n 8007076 - The workaround is to continue setting ADEN until ADRDY is becomes 1. - Additionally, ADC_ENABLE_TIMEOUT is defined to encompass this - 4 ADC clock cycle duration */ - /* Note: Test of ADC enabled required due to hardware constraint to */ - /* not enable ADC if already enabled. */ - if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) - 8007026: 687b ldr r3, [r7, #4] - 8007028: 681b ldr r3, [r3, #0] - 800702a: 0018 movs r0, r3 - 800702c: f7ff fa6e bl 800650c - 8007030: 1e03 subs r3, r0, #0 - 8007032: d104 bne.n 800703e - { - LL_ADC_Enable(hadc->Instance); - 8007034: 687b ldr r3, [r7, #4] - 8007036: 681b ldr r3, [r3, #0] - 8007038: 0018 movs r0, r3 - 800703a: f7ff fa43 bl 80064c4 - } - - if ((HAL_GetTick() - tickstart) > ADC_ENABLE_TIMEOUT) - 800703e: f7ff f90f bl 8006260 - 8007042: 0002 movs r2, r0 - 8007044: 68fb ldr r3, [r7, #12] - 8007046: 1ad3 subs r3, r2, r3 - 8007048: 2b02 cmp r3, #2 - 800704a: d914 bls.n 8007076 - { - /* New check to avoid false timeout detection in case of preemption */ - if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_RDY) == 0UL) - 800704c: 687b ldr r3, [r7, #4] - 800704e: 681b ldr r3, [r3, #0] - 8007050: 681b ldr r3, [r3, #0] - 8007052: 2201 movs r2, #1 - 8007054: 4013 ands r3, r2 - 8007056: 2b01 cmp r3, #1 - 8007058: d00d beq.n 8007076 - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 800705a: 687b ldr r3, [r7, #4] - 800705c: 6d9b ldr r3, [r3, #88] ; 0x58 - 800705e: 2210 movs r2, #16 - 8007060: 431a orrs r2, r3 - 8007062: 687b ldr r3, [r7, #4] - 8007064: 659a str r2, [r3, #88] ; 0x58 - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8007066: 687b ldr r3, [r7, #4] - 8007068: 6ddb ldr r3, [r3, #92] ; 0x5c - 800706a: 2201 movs r2, #1 - 800706c: 431a orrs r2, r3 - 800706e: 687b ldr r3, [r7, #4] - 8007070: 65da str r2, [r3, #92] ; 0x5c - - return HAL_ERROR; - 8007072: 2301 movs r3, #1 - 8007074: e007 b.n 8007086 - while (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_RDY) == 0UL) - 8007076: 687b ldr r3, [r7, #4] - 8007078: 681b ldr r3, [r3, #0] - 800707a: 681b ldr r3, [r3, #0] - 800707c: 2201 movs r2, #1 - 800707e: 4013 ands r3, r2 - 8007080: 2b01 cmp r3, #1 - 8007082: d1d0 bne.n 8007026 - } - } - } - - /* Return HAL status */ - return HAL_OK; - 8007084: 2300 movs r3, #0 -} - 8007086: 0018 movs r0, r3 - 8007088: 46bd mov sp, r7 - 800708a: b004 add sp, #16 - 800708c: bd80 pop {r7, pc} - 800708e: 46c0 nop ; (mov r8, r8) - 8007090: 80000017 .word 0x80000017 - 8007094: 40012708 .word 0x40012708 - 8007098: 20000040 .word 0x20000040 - 800709c: 00030d40 .word 0x00030d40 - -080070a0 : - * stopped. - * @param hadc ADC handle - * @retval HAL status. - */ -HAL_StatusTypeDef ADC_Disable(ADC_HandleTypeDef *hadc) -{ - 80070a0: b580 push {r7, lr} - 80070a2: b084 sub sp, #16 - 80070a4: af00 add r7, sp, #0 - 80070a6: 6078 str r0, [r7, #4] - uint32_t tickstart; - const uint32_t tmp_adc_is_disable_on_going = LL_ADC_IsDisableOngoing(hadc->Instance); - 80070a8: 687b ldr r3, [r7, #4] - 80070aa: 681b ldr r3, [r3, #0] - 80070ac: 0018 movs r0, r3 - 80070ae: f7ff fa3e bl 800652e - 80070b2: 0003 movs r3, r0 - 80070b4: 60fb str r3, [r7, #12] - - /* Verification if ADC is not already disabled: */ - /* Note: forbidden to disable ADC (set bit ADC_CR_ADDIS) if ADC is already */ - /* disabled. */ - if ((LL_ADC_IsEnabled(hadc->Instance) != 0UL) - 80070b6: 687b ldr r3, [r7, #4] - 80070b8: 681b ldr r3, [r3, #0] - 80070ba: 0018 movs r0, r3 - 80070bc: f7ff fa26 bl 800650c - 80070c0: 1e03 subs r3, r0, #0 - 80070c2: d046 beq.n 8007152 - && (tmp_adc_is_disable_on_going == 0UL) - 80070c4: 68fb ldr r3, [r7, #12] - 80070c6: 2b00 cmp r3, #0 - 80070c8: d143 bne.n 8007152 - ) - { - /* Check if conditions to disable the ADC are fulfilled */ - if ((hadc->Instance->CR & (ADC_CR_ADSTART | ADC_CR_ADEN)) == ADC_CR_ADEN) - 80070ca: 687b ldr r3, [r7, #4] - 80070cc: 681b ldr r3, [r3, #0] - 80070ce: 689b ldr r3, [r3, #8] - 80070d0: 2205 movs r2, #5 - 80070d2: 4013 ands r3, r2 - 80070d4: 2b01 cmp r3, #1 - 80070d6: d10d bne.n 80070f4 - { - /* Disable the ADC peripheral */ - LL_ADC_Disable(hadc->Instance); - 80070d8: 687b ldr r3, [r7, #4] - 80070da: 681b ldr r3, [r3, #0] - 80070dc: 0018 movs r0, r3 - 80070de: f7ff fa03 bl 80064e8 - __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOSMP | ADC_FLAG_RDY)); - 80070e2: 687b ldr r3, [r7, #4] - 80070e4: 681b ldr r3, [r3, #0] - 80070e6: 2203 movs r2, #3 - 80070e8: 601a str r2, [r3, #0] - return HAL_ERROR; - } - - /* Wait for ADC effectively disabled */ - /* Get tick count */ - tickstart = HAL_GetTick(); - 80070ea: f7ff f8b9 bl 8006260 - 80070ee: 0003 movs r3, r0 - 80070f0: 60bb str r3, [r7, #8] - - while ((hadc->Instance->CR & ADC_CR_ADEN) != 0UL) - 80070f2: e028 b.n 8007146 - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 80070f4: 687b ldr r3, [r7, #4] - 80070f6: 6d9b ldr r3, [r3, #88] ; 0x58 - 80070f8: 2210 movs r2, #16 - 80070fa: 431a orrs r2, r3 - 80070fc: 687b ldr r3, [r7, #4] - 80070fe: 659a str r2, [r3, #88] ; 0x58 - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8007100: 687b ldr r3, [r7, #4] - 8007102: 6ddb ldr r3, [r3, #92] ; 0x5c - 8007104: 2201 movs r2, #1 - 8007106: 431a orrs r2, r3 - 8007108: 687b ldr r3, [r7, #4] - 800710a: 65da str r2, [r3, #92] ; 0x5c - return HAL_ERROR; - 800710c: 2301 movs r3, #1 - 800710e: e021 b.n 8007154 - { - if ((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT) - 8007110: f7ff f8a6 bl 8006260 - 8007114: 0002 movs r2, r0 - 8007116: 68bb ldr r3, [r7, #8] - 8007118: 1ad3 subs r3, r2, r3 - 800711a: 2b02 cmp r3, #2 - 800711c: d913 bls.n 8007146 - { - /* New check to avoid false timeout detection in case of preemption */ - if ((hadc->Instance->CR & ADC_CR_ADEN) != 0UL) - 800711e: 687b ldr r3, [r7, #4] - 8007120: 681b ldr r3, [r3, #0] - 8007122: 689b ldr r3, [r3, #8] - 8007124: 2201 movs r2, #1 - 8007126: 4013 ands r3, r2 - 8007128: d00d beq.n 8007146 - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 800712a: 687b ldr r3, [r7, #4] - 800712c: 6d9b ldr r3, [r3, #88] ; 0x58 - 800712e: 2210 movs r2, #16 - 8007130: 431a orrs r2, r3 - 8007132: 687b ldr r3, [r7, #4] - 8007134: 659a str r2, [r3, #88] ; 0x58 - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8007136: 687b ldr r3, [r7, #4] - 8007138: 6ddb ldr r3, [r3, #92] ; 0x5c - 800713a: 2201 movs r2, #1 - 800713c: 431a orrs r2, r3 - 800713e: 687b ldr r3, [r7, #4] - 8007140: 65da str r2, [r3, #92] ; 0x5c - - return HAL_ERROR; - 8007142: 2301 movs r3, #1 - 8007144: e006 b.n 8007154 - while ((hadc->Instance->CR & ADC_CR_ADEN) != 0UL) - 8007146: 687b ldr r3, [r7, #4] - 8007148: 681b ldr r3, [r3, #0] - 800714a: 689b ldr r3, [r3, #8] - 800714c: 2201 movs r2, #1 - 800714e: 4013 ands r3, r2 - 8007150: d1de bne.n 8007110 - } - } - } - - /* Return HAL status */ - return HAL_OK; - 8007152: 2300 movs r3, #0 -} - 8007154: 0018 movs r0, r3 - 8007156: 46bd mov sp, r7 - 8007158: b004 add sp, #16 - 800715a: bd80 pop {r7, pc} - -0800715c : -{ - 800715c: b580 push {r7, lr} - 800715e: b082 sub sp, #8 - 8007160: af00 add r7, sp, #0 - 8007162: 6078 str r0, [r7, #4] - 8007164: 6039 str r1, [r7, #0] - MODIFY_REG(ADCx->CALFACT, - 8007166: 687b ldr r3, [r7, #4] - 8007168: 22b4 movs r2, #180 ; 0xb4 - 800716a: 589b ldr r3, [r3, r2] - 800716c: 227f movs r2, #127 ; 0x7f - 800716e: 4393 bics r3, r2 - 8007170: 001a movs r2, r3 - 8007172: 683b ldr r3, [r7, #0] - 8007174: 431a orrs r2, r3 - 8007176: 687b ldr r3, [r7, #4] - 8007178: 21b4 movs r1, #180 ; 0xb4 - 800717a: 505a str r2, [r3, r1] -} - 800717c: 46c0 nop ; (mov r8, r8) - 800717e: 46bd mov sp, r7 - 8007180: b002 add sp, #8 - 8007182: bd80 pop {r7, pc} - -08007184 : -{ - 8007184: b580 push {r7, lr} - 8007186: b082 sub sp, #8 - 8007188: af00 add r7, sp, #0 - 800718a: 6078 str r0, [r7, #4] - return (uint32_t)(READ_BIT(ADCx->CALFACT, ADC_CALFACT_CALFACT)); - 800718c: 687b ldr r3, [r7, #4] - 800718e: 22b4 movs r2, #180 ; 0xb4 - 8007190: 589b ldr r3, [r3, r2] - 8007192: 227f movs r2, #127 ; 0x7f - 8007194: 4013 ands r3, r2 -} - 8007196: 0018 movs r0, r3 - 8007198: 46bd mov sp, r7 - 800719a: b002 add sp, #8 - 800719c: bd80 pop {r7, pc} - ... - -080071a0 : -{ - 80071a0: b580 push {r7, lr} - 80071a2: b082 sub sp, #8 - 80071a4: af00 add r7, sp, #0 - 80071a6: 6078 str r0, [r7, #4] - MODIFY_REG(ADCx->CR, - 80071a8: 687b ldr r3, [r7, #4] - 80071aa: 689b ldr r3, [r3, #8] - 80071ac: 4a04 ldr r2, [pc, #16] ; (80071c0 ) - 80071ae: 4013 ands r3, r2 - 80071b0: 2201 movs r2, #1 - 80071b2: 431a orrs r2, r3 - 80071b4: 687b ldr r3, [r7, #4] - 80071b6: 609a str r2, [r3, #8] -} - 80071b8: 46c0 nop ; (mov r8, r8) - 80071ba: 46bd mov sp, r7 - 80071bc: b002 add sp, #8 - 80071be: bd80 pop {r7, pc} - 80071c0: 7fffffe8 .word 0x7fffffe8 - -080071c4 : -{ - 80071c4: b580 push {r7, lr} - 80071c6: b082 sub sp, #8 - 80071c8: af00 add r7, sp, #0 - 80071ca: 6078 str r0, [r7, #4] - MODIFY_REG(ADCx->CR, - 80071cc: 687b ldr r3, [r7, #4] - 80071ce: 689b ldr r3, [r3, #8] - 80071d0: 4a04 ldr r2, [pc, #16] ; (80071e4 ) - 80071d2: 4013 ands r3, r2 - 80071d4: 2202 movs r2, #2 - 80071d6: 431a orrs r2, r3 - 80071d8: 687b ldr r3, [r7, #4] - 80071da: 609a str r2, [r3, #8] -} - 80071dc: 46c0 nop ; (mov r8, r8) - 80071de: 46bd mov sp, r7 - 80071e0: b002 add sp, #8 - 80071e2: bd80 pop {r7, pc} - 80071e4: 7fffffe8 .word 0x7fffffe8 - -080071e8 : -{ - 80071e8: b580 push {r7, lr} - 80071ea: b082 sub sp, #8 - 80071ec: af00 add r7, sp, #0 - 80071ee: 6078 str r0, [r7, #4] - return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); - 80071f0: 687b ldr r3, [r7, #4] - 80071f2: 689b ldr r3, [r3, #8] - 80071f4: 2201 movs r2, #1 - 80071f6: 4013 ands r3, r2 - 80071f8: 2b01 cmp r3, #1 - 80071fa: d101 bne.n 8007200 - 80071fc: 2301 movs r3, #1 - 80071fe: e000 b.n 8007202 - 8007200: 2300 movs r3, #0 -} - 8007202: 0018 movs r0, r3 - 8007204: 46bd mov sp, r7 - 8007206: b002 add sp, #8 - 8007208: bd80 pop {r7, pc} - ... - -0800720c : -{ - 800720c: b580 push {r7, lr} - 800720e: b082 sub sp, #8 - 8007210: af00 add r7, sp, #0 - 8007212: 6078 str r0, [r7, #4] - MODIFY_REG(ADCx->CR, - 8007214: 687b ldr r3, [r7, #4] - 8007216: 689b ldr r3, [r3, #8] - 8007218: 4a05 ldr r2, [pc, #20] ; (8007230 ) - 800721a: 4013 ands r3, r2 - 800721c: 2280 movs r2, #128 ; 0x80 - 800721e: 0612 lsls r2, r2, #24 - 8007220: 431a orrs r2, r3 - 8007222: 687b ldr r3, [r7, #4] - 8007224: 609a str r2, [r3, #8] -} - 8007226: 46c0 nop ; (mov r8, r8) - 8007228: 46bd mov sp, r7 - 800722a: b002 add sp, #8 - 800722c: bd80 pop {r7, pc} - 800722e: 46c0 nop ; (mov r8, r8) - 8007230: 7fffffe8 .word 0x7fffffe8 - -08007234 : -{ - 8007234: b580 push {r7, lr} - 8007236: b082 sub sp, #8 - 8007238: af00 add r7, sp, #0 - 800723a: 6078 str r0, [r7, #4] - return ((READ_BIT(ADCx->CR, ADC_CR_ADCAL) == (ADC_CR_ADCAL)) ? 1UL : 0UL); - 800723c: 687b ldr r3, [r7, #4] - 800723e: 689b ldr r3, [r3, #8] - 8007240: 0fdb lsrs r3, r3, #31 - 8007242: 07da lsls r2, r3, #31 - 8007244: 2380 movs r3, #128 ; 0x80 - 8007246: 061b lsls r3, r3, #24 - 8007248: 429a cmp r2, r3 - 800724a: d101 bne.n 8007250 - 800724c: 2301 movs r3, #1 - 800724e: e000 b.n 8007252 - 8007250: 2300 movs r3, #0 -} - 8007252: 0018 movs r0, r3 - 8007254: 46bd mov sp, r7 - 8007256: b002 add sp, #8 - 8007258: bd80 pop {r7, pc} - ... - -0800725c : - * HAL_ADC_GetValue() (value on 7 bits: from DR[6;0]). - * @param hadc ADC handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef *hadc) -{ - 800725c: b590 push {r4, r7, lr} - 800725e: b089 sub sp, #36 ; 0x24 - 8007260: af00 add r7, sp, #0 - 8007262: 6078 str r0, [r7, #4] - HAL_StatusTypeDef tmp_hal_status; - __IO uint32_t wait_loop_index = 0UL; - 8007264: 2300 movs r3, #0 - 8007266: 60bb str r3, [r7, #8] - uint32_t backup_setting_cfgr1; - uint32_t calibration_index; - uint32_t calibration_factor_accumulated = 0; - 8007268: 2300 movs r3, #0 - 800726a: 61bb str r3, [r7, #24] - uint32_t tickstart; - - /* Check the parameters */ - assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); - - __HAL_LOCK(hadc); - 800726c: 687b ldr r3, [r7, #4] - 800726e: 2254 movs r2, #84 ; 0x54 - 8007270: 5c9b ldrb r3, [r3, r2] - 8007272: 2b01 cmp r3, #1 - 8007274: d101 bne.n 800727a - 8007276: 2302 movs r3, #2 - 8007278: e0ba b.n 80073f0 - 800727a: 687b ldr r3, [r7, #4] - 800727c: 2254 movs r2, #84 ; 0x54 - 800727e: 2101 movs r1, #1 - 8007280: 5499 strb r1, [r3, r2] - - /* Calibration prerequisite: ADC must be disabled. */ - - /* Disable the ADC (if not already disabled) */ - tmp_hal_status = ADC_Disable(hadc); - 8007282: 2317 movs r3, #23 - 8007284: 18fc adds r4, r7, r3 - 8007286: 687b ldr r3, [r7, #4] - 8007288: 0018 movs r0, r3 - 800728a: f7ff ff09 bl 80070a0 - 800728e: 0003 movs r3, r0 - 8007290: 7023 strb r3, [r4, #0] - - /* Check if ADC is effectively disabled */ - if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) - 8007292: 687b ldr r3, [r7, #4] - 8007294: 681b ldr r3, [r3, #0] - 8007296: 0018 movs r0, r3 - 8007298: f7ff ffa6 bl 80071e8 - 800729c: 1e03 subs r3, r0, #0 - 800729e: d000 beq.n 80072a2 - 80072a0: e099 b.n 80073d6 - { - /* Set ADC state */ - ADC_STATE_CLR_SET(hadc->State, - 80072a2: 687b ldr r3, [r7, #4] - 80072a4: 6d9b ldr r3, [r3, #88] ; 0x58 - 80072a6: 4a54 ldr r2, [pc, #336] ; (80073f8 ) - 80072a8: 4013 ands r3, r2 - 80072aa: 2202 movs r2, #2 - 80072ac: 431a orrs r2, r3 - 80072ae: 687b ldr r3, [r7, #4] - 80072b0: 659a str r2, [r3, #88] ; 0x58 - /* Note: Specificity of this STM32 series: Calibration factor is */ - /* available in data register and also transferred by DMA. */ - /* To not insert ADC calibration factor among ADC conversion data */ - /* in array variable, DMA transfer must be disabled during */ - /* calibration. */ - backup_setting_cfgr1 = READ_BIT(hadc->Instance->CFGR1, ADC_CFGR1_DMAEN | ADC_CFGR1_DMACFG | ADC_CFGR1_AUTOFF); - 80072b2: 687b ldr r3, [r7, #4] - 80072b4: 681b ldr r3, [r3, #0] - 80072b6: 68db ldr r3, [r3, #12] - 80072b8: 4a50 ldr r2, [pc, #320] ; (80073fc ) - 80072ba: 4013 ands r3, r2 - 80072bc: 613b str r3, [r7, #16] - CLEAR_BIT(hadc->Instance->CFGR1, ADC_CFGR1_DMAEN | ADC_CFGR1_DMACFG | ADC_CFGR1_AUTOFF); - 80072be: 687b ldr r3, [r7, #4] - 80072c0: 681b ldr r3, [r3, #0] - 80072c2: 68da ldr r2, [r3, #12] - 80072c4: 687b ldr r3, [r7, #4] - 80072c6: 681b ldr r3, [r3, #0] - 80072c8: 494d ldr r1, [pc, #308] ; (8007400 ) - 80072ca: 400a ands r2, r1 - 80072cc: 60da str r2, [r3, #12] - - /* ADC calibration procedure */ - /* Note: Perform an averaging of 8 calibrations for optimized accuracy */ - for (calibration_index = 0UL; calibration_index < 8UL; calibration_index++) - 80072ce: 2300 movs r3, #0 - 80072d0: 61fb str r3, [r7, #28] - 80072d2: e02d b.n 8007330 - { - /* Start ADC calibration */ - LL_ADC_StartCalibration(hadc->Instance); - 80072d4: 687b ldr r3, [r7, #4] - 80072d6: 681b ldr r3, [r3, #0] - 80072d8: 0018 movs r0, r3 - 80072da: f7ff ff97 bl 800720c - - /* Wait for calibration completion */ - while (LL_ADC_IsCalibrationOnGoing(hadc->Instance) != 0UL) - 80072de: e014 b.n 800730a - { - wait_loop_index++; - 80072e0: 68bb ldr r3, [r7, #8] - 80072e2: 3301 adds r3, #1 - 80072e4: 60bb str r3, [r7, #8] - if (wait_loop_index >= ADC_CALIBRATION_TIMEOUT) - 80072e6: 68bb ldr r3, [r7, #8] - 80072e8: 4a46 ldr r2, [pc, #280] ; (8007404 ) - 80072ea: 4293 cmp r3, r2 - 80072ec: d90d bls.n 800730a - { - /* Update ADC state machine to error */ - ADC_STATE_CLR_SET(hadc->State, - 80072ee: 687b ldr r3, [r7, #4] - 80072f0: 6d9b ldr r3, [r3, #88] ; 0x58 - 80072f2: 2212 movs r2, #18 - 80072f4: 4393 bics r3, r2 - 80072f6: 2210 movs r2, #16 - 80072f8: 431a orrs r2, r3 - 80072fa: 687b ldr r3, [r7, #4] - 80072fc: 659a str r2, [r3, #88] ; 0x58 - HAL_ADC_STATE_BUSY_INTERNAL, - HAL_ADC_STATE_ERROR_INTERNAL); - - __HAL_UNLOCK(hadc); - 80072fe: 687b ldr r3, [r7, #4] - 8007300: 2254 movs r2, #84 ; 0x54 - 8007302: 2100 movs r1, #0 - 8007304: 5499 strb r1, [r3, r2] - - return HAL_ERROR; - 8007306: 2301 movs r3, #1 - 8007308: e072 b.n 80073f0 - while (LL_ADC_IsCalibrationOnGoing(hadc->Instance) != 0UL) - 800730a: 687b ldr r3, [r7, #4] - 800730c: 681b ldr r3, [r3, #0] - 800730e: 0018 movs r0, r3 - 8007310: f7ff ff90 bl 8007234 - 8007314: 1e03 subs r3, r0, #0 - 8007316: d1e3 bne.n 80072e0 - } - } - - calibration_factor_accumulated += LL_ADC_GetCalibrationFactor(hadc->Instance); - 8007318: 687b ldr r3, [r7, #4] - 800731a: 681b ldr r3, [r3, #0] - 800731c: 0018 movs r0, r3 - 800731e: f7ff ff31 bl 8007184 - 8007322: 0002 movs r2, r0 - 8007324: 69bb ldr r3, [r7, #24] - 8007326: 189b adds r3, r3, r2 - 8007328: 61bb str r3, [r7, #24] - for (calibration_index = 0UL; calibration_index < 8UL; calibration_index++) - 800732a: 69fb ldr r3, [r7, #28] - 800732c: 3301 adds r3, #1 - 800732e: 61fb str r3, [r7, #28] - 8007330: 69fb ldr r3, [r7, #28] - 8007332: 2b07 cmp r3, #7 - 8007334: d9ce bls.n 80072d4 - } - /* Compute average */ - calibration_factor_accumulated /= calibration_index; - 8007336: 69f9 ldr r1, [r7, #28] - 8007338: 69b8 ldr r0, [r7, #24] - 800733a: f7f8 fef7 bl 800012c <__udivsi3> - 800733e: 0003 movs r3, r0 - 8007340: 61bb str r3, [r7, #24] - /* Apply calibration factor */ - LL_ADC_Enable(hadc->Instance); - 8007342: 687b ldr r3, [r7, #4] - 8007344: 681b ldr r3, [r3, #0] - 8007346: 0018 movs r0, r3 - 8007348: f7ff ff2a bl 80071a0 - LL_ADC_SetCalibrationFactor(hadc->Instance, calibration_factor_accumulated); - 800734c: 687b ldr r3, [r7, #4] - 800734e: 681b ldr r3, [r3, #0] - 8007350: 69ba ldr r2, [r7, #24] - 8007352: 0011 movs r1, r2 - 8007354: 0018 movs r0, r3 - 8007356: f7ff ff01 bl 800715c - LL_ADC_Disable(hadc->Instance); - 800735a: 687b ldr r3, [r7, #4] - 800735c: 681b ldr r3, [r3, #0] - 800735e: 0018 movs r0, r3 - 8007360: f7ff ff30 bl 80071c4 - - /* Wait for ADC effectively disabled before changing configuration */ - /* Get tick count */ - tickstart = HAL_GetTick(); - 8007364: f7fe ff7c bl 8006260 - 8007368: 0003 movs r3, r0 - 800736a: 60fb str r3, [r7, #12] - - while (LL_ADC_IsEnabled(hadc->Instance) != 0UL) - 800736c: e01b b.n 80073a6 - { - if ((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT) - 800736e: f7fe ff77 bl 8006260 - 8007372: 0002 movs r2, r0 - 8007374: 68fb ldr r3, [r7, #12] - 8007376: 1ad3 subs r3, r2, r3 - 8007378: 2b02 cmp r3, #2 - 800737a: d914 bls.n 80073a6 - { - /* New check to avoid false timeout detection in case of preemption */ - if (LL_ADC_IsEnabled(hadc->Instance) != 0UL) - 800737c: 687b ldr r3, [r7, #4] - 800737e: 681b ldr r3, [r3, #0] - 8007380: 0018 movs r0, r3 - 8007382: f7ff ff31 bl 80071e8 - 8007386: 1e03 subs r3, r0, #0 - 8007388: d00d beq.n 80073a6 - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 800738a: 687b ldr r3, [r7, #4] - 800738c: 6d9b ldr r3, [r3, #88] ; 0x58 - 800738e: 2210 movs r2, #16 - 8007390: 431a orrs r2, r3 - 8007392: 687b ldr r3, [r7, #4] - 8007394: 659a str r2, [r3, #88] ; 0x58 - - /* Set ADC error code to ADC peripheral internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8007396: 687b ldr r3, [r7, #4] - 8007398: 6ddb ldr r3, [r3, #92] ; 0x5c - 800739a: 2201 movs r2, #1 - 800739c: 431a orrs r2, r3 - 800739e: 687b ldr r3, [r7, #4] - 80073a0: 65da str r2, [r3, #92] ; 0x5c - - return HAL_ERROR; - 80073a2: 2301 movs r3, #1 - 80073a4: e024 b.n 80073f0 - while (LL_ADC_IsEnabled(hadc->Instance) != 0UL) - 80073a6: 687b ldr r3, [r7, #4] - 80073a8: 681b ldr r3, [r3, #0] - 80073aa: 0018 movs r0, r3 - 80073ac: f7ff ff1c bl 80071e8 - 80073b0: 1e03 subs r3, r0, #0 - 80073b2: d1dc bne.n 800736e - } - } - } - - /* Restore configuration after calibration */ - SET_BIT(hadc->Instance->CFGR1, backup_setting_cfgr1); - 80073b4: 687b ldr r3, [r7, #4] - 80073b6: 681b ldr r3, [r3, #0] - 80073b8: 68d9 ldr r1, [r3, #12] - 80073ba: 687b ldr r3, [r7, #4] - 80073bc: 681b ldr r3, [r3, #0] - 80073be: 693a ldr r2, [r7, #16] - 80073c0: 430a orrs r2, r1 - 80073c2: 60da str r2, [r3, #12] - - /* Set ADC state */ - ADC_STATE_CLR_SET(hadc->State, - 80073c4: 687b ldr r3, [r7, #4] - 80073c6: 6d9b ldr r3, [r3, #88] ; 0x58 - 80073c8: 2203 movs r2, #3 - 80073ca: 4393 bics r3, r2 - 80073cc: 2201 movs r2, #1 - 80073ce: 431a orrs r2, r3 - 80073d0: 687b ldr r3, [r7, #4] - 80073d2: 659a str r2, [r3, #88] ; 0x58 - 80073d4: e005 b.n 80073e2 - HAL_ADC_STATE_BUSY_INTERNAL, - HAL_ADC_STATE_READY); - } - else - { - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 80073d6: 687b ldr r3, [r7, #4] - 80073d8: 6d9b ldr r3, [r3, #88] ; 0x58 - 80073da: 2210 movs r2, #16 - 80073dc: 431a orrs r2, r3 - 80073de: 687b ldr r3, [r7, #4] - 80073e0: 659a str r2, [r3, #88] ; 0x58 - - /* Note: No need to update variable "tmp_hal_status" here: already set */ - /* to state "HAL_ERROR" by function disabling the ADC. */ - } - - __HAL_UNLOCK(hadc); - 80073e2: 687b ldr r3, [r7, #4] - 80073e4: 2254 movs r2, #84 ; 0x54 - 80073e6: 2100 movs r1, #0 - 80073e8: 5499 strb r1, [r3, r2] - - return tmp_hal_status; - 80073ea: 2317 movs r3, #23 - 80073ec: 18fb adds r3, r7, r3 - 80073ee: 781b ldrb r3, [r3, #0] -} - 80073f0: 0018 movs r0, r3 - 80073f2: 46bd mov sp, r7 - 80073f4: b009 add sp, #36 ; 0x24 - 80073f6: bd90 pop {r4, r7, pc} - 80073f8: fffffefd .word 0xfffffefd - 80073fc: 00008003 .word 0x00008003 - 8007400: ffff7ffc .word 0xffff7ffc - 8007404: 0002f1ff .word 0x0002f1ff - -08007408 <__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) -{ - 8007408: b580 push {r7, lr} - 800740a: b082 sub sp, #8 - 800740c: af00 add r7, sp, #0 - 800740e: 0002 movs r2, r0 - 8007410: 1dfb adds r3, r7, #7 - 8007412: 701a strb r2, [r3, #0] - if ((int32_t)(IRQn) >= 0) - 8007414: 1dfb adds r3, r7, #7 - 8007416: 781b ldrb r3, [r3, #0] - 8007418: 2b7f cmp r3, #127 ; 0x7f - 800741a: d809 bhi.n 8007430 <__NVIC_EnableIRQ+0x28> - { - __COMPILER_BARRIER(); - NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 800741c: 1dfb adds r3, r7, #7 - 800741e: 781b ldrb r3, [r3, #0] - 8007420: 001a movs r2, r3 - 8007422: 231f movs r3, #31 - 8007424: 401a ands r2, r3 - 8007426: 4b04 ldr r3, [pc, #16] ; (8007438 <__NVIC_EnableIRQ+0x30>) - 8007428: 2101 movs r1, #1 - 800742a: 4091 lsls r1, r2 - 800742c: 000a movs r2, r1 - 800742e: 601a str r2, [r3, #0] - __COMPILER_BARRIER(); - } -} - 8007430: 46c0 nop ; (mov r8, r8) - 8007432: 46bd mov sp, r7 - 8007434: b002 add sp, #8 - 8007436: bd80 pop {r7, pc} - 8007438: e000e100 .word 0xe000e100 - -0800743c <__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) -{ - 800743c: b590 push {r4, r7, lr} - 800743e: b083 sub sp, #12 - 8007440: af00 add r7, sp, #0 - 8007442: 0002 movs r2, r0 - 8007444: 6039 str r1, [r7, #0] - 8007446: 1dfb adds r3, r7, #7 - 8007448: 701a strb r2, [r3, #0] - if ((int32_t)(IRQn) >= 0) - 800744a: 1dfb adds r3, r7, #7 - 800744c: 781b ldrb r3, [r3, #0] - 800744e: 2b7f cmp r3, #127 ; 0x7f - 8007450: d828 bhi.n 80074a4 <__NVIC_SetPriority+0x68> - { - NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8007452: 4a2f ldr r2, [pc, #188] ; (8007510 <__NVIC_SetPriority+0xd4>) - 8007454: 1dfb adds r3, r7, #7 - 8007456: 781b ldrb r3, [r3, #0] - 8007458: b25b sxtb r3, r3 - 800745a: 089b lsrs r3, r3, #2 - 800745c: 33c0 adds r3, #192 ; 0xc0 - 800745e: 009b lsls r3, r3, #2 - 8007460: 589b ldr r3, [r3, r2] - 8007462: 1dfa adds r2, r7, #7 - 8007464: 7812 ldrb r2, [r2, #0] - 8007466: 0011 movs r1, r2 - 8007468: 2203 movs r2, #3 - 800746a: 400a ands r2, r1 - 800746c: 00d2 lsls r2, r2, #3 - 800746e: 21ff movs r1, #255 ; 0xff - 8007470: 4091 lsls r1, r2 - 8007472: 000a movs r2, r1 - 8007474: 43d2 mvns r2, r2 - 8007476: 401a ands r2, r3 - 8007478: 0011 movs r1, r2 - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 800747a: 683b ldr r3, [r7, #0] - 800747c: 019b lsls r3, r3, #6 - 800747e: 22ff movs r2, #255 ; 0xff - 8007480: 401a ands r2, r3 - 8007482: 1dfb adds r3, r7, #7 - 8007484: 781b ldrb r3, [r3, #0] - 8007486: 0018 movs r0, r3 - 8007488: 2303 movs r3, #3 - 800748a: 4003 ands r3, r0 - 800748c: 00db lsls r3, r3, #3 - 800748e: 409a lsls r2, r3 - NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8007490: 481f ldr r0, [pc, #124] ; (8007510 <__NVIC_SetPriority+0xd4>) - 8007492: 1dfb adds r3, r7, #7 - 8007494: 781b ldrb r3, [r3, #0] - 8007496: b25b sxtb r3, r3 - 8007498: 089b lsrs r3, r3, #2 - 800749a: 430a orrs r2, r1 - 800749c: 33c0 adds r3, #192 ; 0xc0 - 800749e: 009b lsls r3, r3, #2 - 80074a0: 501a str r2, [r3, r0] - else - { - SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } -} - 80074a2: e031 b.n 8007508 <__NVIC_SetPriority+0xcc> - SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 80074a4: 4a1b ldr r2, [pc, #108] ; (8007514 <__NVIC_SetPriority+0xd8>) - 80074a6: 1dfb adds r3, r7, #7 - 80074a8: 781b ldrb r3, [r3, #0] - 80074aa: 0019 movs r1, r3 - 80074ac: 230f movs r3, #15 - 80074ae: 400b ands r3, r1 - 80074b0: 3b08 subs r3, #8 - 80074b2: 089b lsrs r3, r3, #2 - 80074b4: 3306 adds r3, #6 - 80074b6: 009b lsls r3, r3, #2 - 80074b8: 18d3 adds r3, r2, r3 - 80074ba: 3304 adds r3, #4 - 80074bc: 681b ldr r3, [r3, #0] - 80074be: 1dfa adds r2, r7, #7 - 80074c0: 7812 ldrb r2, [r2, #0] - 80074c2: 0011 movs r1, r2 - 80074c4: 2203 movs r2, #3 - 80074c6: 400a ands r2, r1 - 80074c8: 00d2 lsls r2, r2, #3 - 80074ca: 21ff movs r1, #255 ; 0xff - 80074cc: 4091 lsls r1, r2 - 80074ce: 000a movs r2, r1 - 80074d0: 43d2 mvns r2, r2 - 80074d2: 401a ands r2, r3 - 80074d4: 0011 movs r1, r2 - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 80074d6: 683b ldr r3, [r7, #0] - 80074d8: 019b lsls r3, r3, #6 - 80074da: 22ff movs r2, #255 ; 0xff - 80074dc: 401a ands r2, r3 - 80074de: 1dfb adds r3, r7, #7 - 80074e0: 781b ldrb r3, [r3, #0] - 80074e2: 0018 movs r0, r3 - 80074e4: 2303 movs r3, #3 - 80074e6: 4003 ands r3, r0 - 80074e8: 00db lsls r3, r3, #3 - 80074ea: 409a lsls r2, r3 - SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 80074ec: 4809 ldr r0, [pc, #36] ; (8007514 <__NVIC_SetPriority+0xd8>) - 80074ee: 1dfb adds r3, r7, #7 - 80074f0: 781b ldrb r3, [r3, #0] - 80074f2: 001c movs r4, r3 - 80074f4: 230f movs r3, #15 - 80074f6: 4023 ands r3, r4 - 80074f8: 3b08 subs r3, #8 - 80074fa: 089b lsrs r3, r3, #2 - 80074fc: 430a orrs r2, r1 - 80074fe: 3306 adds r3, #6 - 8007500: 009b lsls r3, r3, #2 - 8007502: 18c3 adds r3, r0, r3 - 8007504: 3304 adds r3, #4 - 8007506: 601a str r2, [r3, #0] -} - 8007508: 46c0 nop ; (mov r8, r8) - 800750a: 46bd mov sp, r7 - 800750c: b003 add sp, #12 - 800750e: bd90 pop {r4, r7, pc} - 8007510: e000e100 .word 0xe000e100 - 8007514: e000ed00 .word 0xe000ed00 - -08007518 : - * with stm32g0xx devices, this parameter is a dummy value and it is ignored, because - * no subpriority supported in Cortex M0+ based products. - * @retval None - */ -void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) -{ - 8007518: b580 push {r7, lr} - 800751a: b084 sub sp, #16 - 800751c: af00 add r7, sp, #0 - 800751e: 60b9 str r1, [r7, #8] - 8007520: 607a str r2, [r7, #4] - 8007522: 210f movs r1, #15 - 8007524: 187b adds r3, r7, r1 - 8007526: 1c02 adds r2, r0, #0 - 8007528: 701a strb r2, [r3, #0] - /* Prevent unused argument(s) compilation warning */ - UNUSED(SubPriority); - - /* Check the parameters */ - assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); - NVIC_SetPriority(IRQn, PreemptPriority); - 800752a: 68ba ldr r2, [r7, #8] - 800752c: 187b adds r3, r7, r1 - 800752e: 781b ldrb r3, [r3, #0] - 8007530: b25b sxtb r3, r3 - 8007532: 0011 movs r1, r2 - 8007534: 0018 movs r0, r3 - 8007536: f7ff ff81 bl 800743c <__NVIC_SetPriority> -} - 800753a: 46c0 nop ; (mov r8, r8) - 800753c: 46bd mov sp, r7 - 800753e: b004 add sp, #16 - 8007540: bd80 pop {r7, pc} - -08007542 : - * 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 (stm32g0xxxx.h)) - * @retval None - */ -void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) -{ - 8007542: b580 push {r7, lr} - 8007544: b082 sub sp, #8 - 8007546: af00 add r7, sp, #0 - 8007548: 0002 movs r2, r0 - 800754a: 1dfb adds r3, r7, #7 - 800754c: 701a strb r2, [r3, #0] - /* Check the parameters */ - assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); - - /* Enable interrupt */ - NVIC_EnableIRQ(IRQn); - 800754e: 1dfb adds r3, r7, #7 - 8007550: 781b ldrb r3, [r3, #0] - 8007552: b25b sxtb r3, r3 - 8007554: 0018 movs r0, r3 - 8007556: f7ff ff57 bl 8007408 <__NVIC_EnableIRQ> -} - 800755a: 46c0 nop ; (mov r8, r8) - 800755c: 46bd mov sp, r7 - 800755e: b002 add sp, #8 - 8007560: bd80 pop {r7, pc} - ... - -08007564 : - * @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) -{ - 8007564: b580 push {r7, lr} - 8007566: b086 sub sp, #24 - 8007568: af00 add r7, sp, #0 - 800756a: 6078 str r0, [r7, #4] - 800756c: 6039 str r1, [r7, #0] - uint32_t position = 0x00u; - 800756e: 2300 movs r3, #0 - 8007570: 617b str r3, [r7, #20] - assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); - assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); - assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); - - /* Configure the port pins */ - while (((GPIO_Init->Pin) >> position) != 0x00u) - 8007572: e147 b.n 8007804 - { - /* Get current io position */ - iocurrent = (GPIO_Init->Pin) & (1uL << position); - 8007574: 683b ldr r3, [r7, #0] - 8007576: 681b ldr r3, [r3, #0] - 8007578: 2101 movs r1, #1 - 800757a: 697a ldr r2, [r7, #20] - 800757c: 4091 lsls r1, r2 - 800757e: 000a movs r2, r1 - 8007580: 4013 ands r3, r2 - 8007582: 60fb str r3, [r7, #12] - - if (iocurrent != 0x00u) - 8007584: 68fb ldr r3, [r7, #12] - 8007586: 2b00 cmp r3, #0 - 8007588: d100 bne.n 800758c - 800758a: e138 b.n 80077fe - { - /*--------------------- GPIO Mode Configuration ------------------------*/ - /* In case of Output or Alternate function mode selection */ - if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) - 800758c: 683b ldr r3, [r7, #0] - 800758e: 685b ldr r3, [r3, #4] - 8007590: 2203 movs r2, #3 - 8007592: 4013 ands r3, r2 - 8007594: 2b01 cmp r3, #1 - 8007596: d005 beq.n 80075a4 - 8007598: 683b ldr r3, [r7, #0] - 800759a: 685b ldr r3, [r3, #4] - 800759c: 2203 movs r2, #3 - 800759e: 4013 ands r3, r2 - 80075a0: 2b02 cmp r3, #2 - 80075a2: d130 bne.n 8007606 - { - /* Check the Speed parameter */ - assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); - - /* Configure the IO Speed */ - temp = GPIOx->OSPEEDR; - 80075a4: 687b ldr r3, [r7, #4] - 80075a6: 689b ldr r3, [r3, #8] - 80075a8: 613b str r3, [r7, #16] - temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2u)); - 80075aa: 697b ldr r3, [r7, #20] - 80075ac: 005b lsls r3, r3, #1 - 80075ae: 2203 movs r2, #3 - 80075b0: 409a lsls r2, r3 - 80075b2: 0013 movs r3, r2 - 80075b4: 43da mvns r2, r3 - 80075b6: 693b ldr r3, [r7, #16] - 80075b8: 4013 ands r3, r2 - 80075ba: 613b str r3, [r7, #16] - temp |= (GPIO_Init->Speed << (position * 2u)); - 80075bc: 683b ldr r3, [r7, #0] - 80075be: 68da ldr r2, [r3, #12] - 80075c0: 697b ldr r3, [r7, #20] - 80075c2: 005b lsls r3, r3, #1 - 80075c4: 409a lsls r2, r3 - 80075c6: 0013 movs r3, r2 - 80075c8: 693a ldr r2, [r7, #16] - 80075ca: 4313 orrs r3, r2 - 80075cc: 613b str r3, [r7, #16] - GPIOx->OSPEEDR = temp; - 80075ce: 687b ldr r3, [r7, #4] - 80075d0: 693a ldr r2, [r7, #16] - 80075d2: 609a str r2, [r3, #8] - - /* Configure the IO Output Type */ - temp = GPIOx->OTYPER; - 80075d4: 687b ldr r3, [r7, #4] - 80075d6: 685b ldr r3, [r3, #4] - 80075d8: 613b str r3, [r7, #16] - temp &= ~(GPIO_OTYPER_OT0 << position) ; - 80075da: 2201 movs r2, #1 - 80075dc: 697b ldr r3, [r7, #20] - 80075de: 409a lsls r2, r3 - 80075e0: 0013 movs r3, r2 - 80075e2: 43da mvns r2, r3 - 80075e4: 693b ldr r3, [r7, #16] - 80075e6: 4013 ands r3, r2 - 80075e8: 613b str r3, [r7, #16] - temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 80075ea: 683b ldr r3, [r7, #0] - 80075ec: 685b ldr r3, [r3, #4] - 80075ee: 091b lsrs r3, r3, #4 - 80075f0: 2201 movs r2, #1 - 80075f2: 401a ands r2, r3 - 80075f4: 697b ldr r3, [r7, #20] - 80075f6: 409a lsls r2, r3 - 80075f8: 0013 movs r3, r2 - 80075fa: 693a ldr r2, [r7, #16] - 80075fc: 4313 orrs r3, r2 - 80075fe: 613b str r3, [r7, #16] - GPIOx->OTYPER = temp; - 8007600: 687b ldr r3, [r7, #4] - 8007602: 693a ldr r2, [r7, #16] - 8007604: 605a str r2, [r3, #4] - } - - if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 8007606: 683b ldr r3, [r7, #0] - 8007608: 685b ldr r3, [r3, #4] - 800760a: 2203 movs r2, #3 - 800760c: 4013 ands r3, r2 - 800760e: 2b03 cmp r3, #3 - 8007610: d017 beq.n 8007642 - { - /* Check the Pull parameter */ - assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); - - /* Activate the Pull-up or Pull down resistor for the current IO */ - temp = GPIOx->PUPDR; - 8007612: 687b ldr r3, [r7, #4] - 8007614: 68db ldr r3, [r3, #12] - 8007616: 613b str r3, [r7, #16] - temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2u)); - 8007618: 697b ldr r3, [r7, #20] - 800761a: 005b lsls r3, r3, #1 - 800761c: 2203 movs r2, #3 - 800761e: 409a lsls r2, r3 - 8007620: 0013 movs r3, r2 - 8007622: 43da mvns r2, r3 - 8007624: 693b ldr r3, [r7, #16] - 8007626: 4013 ands r3, r2 - 8007628: 613b str r3, [r7, #16] - temp |= ((GPIO_Init->Pull) << (position * 2u)); - 800762a: 683b ldr r3, [r7, #0] - 800762c: 689a ldr r2, [r3, #8] - 800762e: 697b ldr r3, [r7, #20] - 8007630: 005b lsls r3, r3, #1 - 8007632: 409a lsls r2, r3 - 8007634: 0013 movs r3, r2 - 8007636: 693a ldr r2, [r7, #16] - 8007638: 4313 orrs r3, r2 - 800763a: 613b str r3, [r7, #16] - GPIOx->PUPDR = temp; - 800763c: 687b ldr r3, [r7, #4] - 800763e: 693a ldr r2, [r7, #16] - 8007640: 60da str r2, [r3, #12] - } - - /* In case of Alternate function mode selection */ - if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8007642: 683b ldr r3, [r7, #0] - 8007644: 685b ldr r3, [r3, #4] - 8007646: 2203 movs r2, #3 - 8007648: 4013 ands r3, r2 - 800764a: 2b02 cmp r3, #2 - 800764c: d123 bne.n 8007696 - /* Check the Alternate function parameters */ - assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); - assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); - - /* Configure Alternate function mapped with the current IO */ - temp = GPIOx->AFR[position >> 3u]; - 800764e: 697b ldr r3, [r7, #20] - 8007650: 08da lsrs r2, r3, #3 - 8007652: 687b ldr r3, [r7, #4] - 8007654: 3208 adds r2, #8 - 8007656: 0092 lsls r2, r2, #2 - 8007658: 58d3 ldr r3, [r2, r3] - 800765a: 613b str r3, [r7, #16] - temp &= ~(0xFu << ((position & 0x07u) * 4u)); - 800765c: 697b ldr r3, [r7, #20] - 800765e: 2207 movs r2, #7 - 8007660: 4013 ands r3, r2 - 8007662: 009b lsls r3, r3, #2 - 8007664: 220f movs r2, #15 - 8007666: 409a lsls r2, r3 - 8007668: 0013 movs r3, r2 - 800766a: 43da mvns r2, r3 - 800766c: 693b ldr r3, [r7, #16] - 800766e: 4013 ands r3, r2 - 8007670: 613b str r3, [r7, #16] - temp |= ((GPIO_Init->Alternate) << ((position & 0x07u) * 4u)); - 8007672: 683b ldr r3, [r7, #0] - 8007674: 691a ldr r2, [r3, #16] - 8007676: 697b ldr r3, [r7, #20] - 8007678: 2107 movs r1, #7 - 800767a: 400b ands r3, r1 - 800767c: 009b lsls r3, r3, #2 - 800767e: 409a lsls r2, r3 - 8007680: 0013 movs r3, r2 - 8007682: 693a ldr r2, [r7, #16] - 8007684: 4313 orrs r3, r2 - 8007686: 613b str r3, [r7, #16] - GPIOx->AFR[position >> 3u] = temp; - 8007688: 697b ldr r3, [r7, #20] - 800768a: 08da lsrs r2, r3, #3 - 800768c: 687b ldr r3, [r7, #4] - 800768e: 3208 adds r2, #8 - 8007690: 0092 lsls r2, r2, #2 - 8007692: 6939 ldr r1, [r7, #16] - 8007694: 50d1 str r1, [r2, r3] - } - - /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ - temp = GPIOx->MODER; - 8007696: 687b ldr r3, [r7, #4] - 8007698: 681b ldr r3, [r3, #0] - 800769a: 613b str r3, [r7, #16] - temp &= ~(GPIO_MODER_MODE0 << (position * 2u)); - 800769c: 697b ldr r3, [r7, #20] - 800769e: 005b lsls r3, r3, #1 - 80076a0: 2203 movs r2, #3 - 80076a2: 409a lsls r2, r3 - 80076a4: 0013 movs r3, r2 - 80076a6: 43da mvns r2, r3 - 80076a8: 693b ldr r3, [r7, #16] - 80076aa: 4013 ands r3, r2 - 80076ac: 613b str r3, [r7, #16] - temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2u)); - 80076ae: 683b ldr r3, [r7, #0] - 80076b0: 685b ldr r3, [r3, #4] - 80076b2: 2203 movs r2, #3 - 80076b4: 401a ands r2, r3 - 80076b6: 697b ldr r3, [r7, #20] - 80076b8: 005b lsls r3, r3, #1 - 80076ba: 409a lsls r2, r3 - 80076bc: 0013 movs r3, r2 - 80076be: 693a ldr r2, [r7, #16] - 80076c0: 4313 orrs r3, r2 - 80076c2: 613b str r3, [r7, #16] - GPIOx->MODER = temp; - 80076c4: 687b ldr r3, [r7, #4] - 80076c6: 693a ldr r2, [r7, #16] - 80076c8: 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) - 80076ca: 683b ldr r3, [r7, #0] - 80076cc: 685a ldr r2, [r3, #4] - 80076ce: 23c0 movs r3, #192 ; 0xc0 - 80076d0: 029b lsls r3, r3, #10 - 80076d2: 4013 ands r3, r2 - 80076d4: d100 bne.n 80076d8 - 80076d6: e092 b.n 80077fe - { - temp = EXTI->EXTICR[position >> 2u]; - 80076d8: 4a50 ldr r2, [pc, #320] ; (800781c ) - 80076da: 697b ldr r3, [r7, #20] - 80076dc: 089b lsrs r3, r3, #2 - 80076de: 3318 adds r3, #24 - 80076e0: 009b lsls r3, r3, #2 - 80076e2: 589b ldr r3, [r3, r2] - 80076e4: 613b str r3, [r7, #16] - temp &= ~(0x0FuL << (8u * (position & 0x03u))); - 80076e6: 697b ldr r3, [r7, #20] - 80076e8: 2203 movs r2, #3 - 80076ea: 4013 ands r3, r2 - 80076ec: 00db lsls r3, r3, #3 - 80076ee: 220f movs r2, #15 - 80076f0: 409a lsls r2, r3 - 80076f2: 0013 movs r3, r2 - 80076f4: 43da mvns r2, r3 - 80076f6: 693b ldr r3, [r7, #16] - 80076f8: 4013 ands r3, r2 - 80076fa: 613b str r3, [r7, #16] - temp |= (GPIO_GET_INDEX(GPIOx) << (8u * (position & 0x03u))); - 80076fc: 687a ldr r2, [r7, #4] - 80076fe: 23a0 movs r3, #160 ; 0xa0 - 8007700: 05db lsls r3, r3, #23 - 8007702: 429a cmp r2, r3 - 8007704: d013 beq.n 800772e - 8007706: 687b ldr r3, [r7, #4] - 8007708: 4a45 ldr r2, [pc, #276] ; (8007820 ) - 800770a: 4293 cmp r3, r2 - 800770c: d00d beq.n 800772a - 800770e: 687b ldr r3, [r7, #4] - 8007710: 4a44 ldr r2, [pc, #272] ; (8007824 ) - 8007712: 4293 cmp r3, r2 - 8007714: d007 beq.n 8007726 - 8007716: 687b ldr r3, [r7, #4] - 8007718: 4a43 ldr r2, [pc, #268] ; (8007828 ) - 800771a: 4293 cmp r3, r2 - 800771c: d101 bne.n 8007722 - 800771e: 2303 movs r3, #3 - 8007720: e006 b.n 8007730 - 8007722: 2305 movs r3, #5 - 8007724: e004 b.n 8007730 - 8007726: 2302 movs r3, #2 - 8007728: e002 b.n 8007730 - 800772a: 2301 movs r3, #1 - 800772c: e000 b.n 8007730 - 800772e: 2300 movs r3, #0 - 8007730: 697a ldr r2, [r7, #20] - 8007732: 2103 movs r1, #3 - 8007734: 400a ands r2, r1 - 8007736: 00d2 lsls r2, r2, #3 - 8007738: 4093 lsls r3, r2 - 800773a: 693a ldr r2, [r7, #16] - 800773c: 4313 orrs r3, r2 - 800773e: 613b str r3, [r7, #16] - EXTI->EXTICR[position >> 2u] = temp; - 8007740: 4936 ldr r1, [pc, #216] ; (800781c ) - 8007742: 697b ldr r3, [r7, #20] - 8007744: 089b lsrs r3, r3, #2 - 8007746: 3318 adds r3, #24 - 8007748: 009b lsls r3, r3, #2 - 800774a: 693a ldr r2, [r7, #16] - 800774c: 505a str r2, [r3, r1] - - /* Clear Rising Falling edge configuration */ - temp = EXTI->RTSR1; - 800774e: 4b33 ldr r3, [pc, #204] ; (800781c ) - 8007750: 681b ldr r3, [r3, #0] - 8007752: 613b str r3, [r7, #16] - temp &= ~(iocurrent); - 8007754: 68fb ldr r3, [r7, #12] - 8007756: 43da mvns r2, r3 - 8007758: 693b ldr r3, [r7, #16] - 800775a: 4013 ands r3, r2 - 800775c: 613b str r3, [r7, #16] - if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) - 800775e: 683b ldr r3, [r7, #0] - 8007760: 685a ldr r2, [r3, #4] - 8007762: 2380 movs r3, #128 ; 0x80 - 8007764: 035b lsls r3, r3, #13 - 8007766: 4013 ands r3, r2 - 8007768: d003 beq.n 8007772 - { - temp |= iocurrent; - 800776a: 693a ldr r2, [r7, #16] - 800776c: 68fb ldr r3, [r7, #12] - 800776e: 4313 orrs r3, r2 - 8007770: 613b str r3, [r7, #16] - } - EXTI->RTSR1 = temp; - 8007772: 4b2a ldr r3, [pc, #168] ; (800781c ) - 8007774: 693a ldr r2, [r7, #16] - 8007776: 601a str r2, [r3, #0] - - temp = EXTI->FTSR1; - 8007778: 4b28 ldr r3, [pc, #160] ; (800781c ) - 800777a: 685b ldr r3, [r3, #4] - 800777c: 613b str r3, [r7, #16] - temp &= ~(iocurrent); - 800777e: 68fb ldr r3, [r7, #12] - 8007780: 43da mvns r2, r3 - 8007782: 693b ldr r3, [r7, #16] - 8007784: 4013 ands r3, r2 - 8007786: 613b str r3, [r7, #16] - if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) - 8007788: 683b ldr r3, [r7, #0] - 800778a: 685a ldr r2, [r3, #4] - 800778c: 2380 movs r3, #128 ; 0x80 - 800778e: 039b lsls r3, r3, #14 - 8007790: 4013 ands r3, r2 - 8007792: d003 beq.n 800779c - { - temp |= iocurrent; - 8007794: 693a ldr r2, [r7, #16] - 8007796: 68fb ldr r3, [r7, #12] - 8007798: 4313 orrs r3, r2 - 800779a: 613b str r3, [r7, #16] - } - EXTI->FTSR1 = temp; - 800779c: 4b1f ldr r3, [pc, #124] ; (800781c ) - 800779e: 693a ldr r2, [r7, #16] - 80077a0: 605a str r2, [r3, #4] - - /* Clear EXTI line configuration */ - temp = EXTI->EMR1; - 80077a2: 4a1e ldr r2, [pc, #120] ; (800781c ) - 80077a4: 2384 movs r3, #132 ; 0x84 - 80077a6: 58d3 ldr r3, [r2, r3] - 80077a8: 613b str r3, [r7, #16] - temp &= ~(iocurrent); - 80077aa: 68fb ldr r3, [r7, #12] - 80077ac: 43da mvns r2, r3 - 80077ae: 693b ldr r3, [r7, #16] - 80077b0: 4013 ands r3, r2 - 80077b2: 613b str r3, [r7, #16] - if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) - 80077b4: 683b ldr r3, [r7, #0] - 80077b6: 685a ldr r2, [r3, #4] - 80077b8: 2380 movs r3, #128 ; 0x80 - 80077ba: 029b lsls r3, r3, #10 - 80077bc: 4013 ands r3, r2 - 80077be: d003 beq.n 80077c8 - { - temp |= iocurrent; - 80077c0: 693a ldr r2, [r7, #16] - 80077c2: 68fb ldr r3, [r7, #12] - 80077c4: 4313 orrs r3, r2 - 80077c6: 613b str r3, [r7, #16] - } - EXTI->EMR1 = temp; - 80077c8: 4914 ldr r1, [pc, #80] ; (800781c ) - 80077ca: 2284 movs r2, #132 ; 0x84 - 80077cc: 693b ldr r3, [r7, #16] - 80077ce: 508b str r3, [r1, r2] - - temp = EXTI->IMR1; - 80077d0: 4a12 ldr r2, [pc, #72] ; (800781c ) - 80077d2: 2380 movs r3, #128 ; 0x80 - 80077d4: 58d3 ldr r3, [r2, r3] - 80077d6: 613b str r3, [r7, #16] - temp &= ~(iocurrent); - 80077d8: 68fb ldr r3, [r7, #12] - 80077da: 43da mvns r2, r3 - 80077dc: 693b ldr r3, [r7, #16] - 80077de: 4013 ands r3, r2 - 80077e0: 613b str r3, [r7, #16] - if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) - 80077e2: 683b ldr r3, [r7, #0] - 80077e4: 685a ldr r2, [r3, #4] - 80077e6: 2380 movs r3, #128 ; 0x80 - 80077e8: 025b lsls r3, r3, #9 - 80077ea: 4013 ands r3, r2 - 80077ec: d003 beq.n 80077f6 - { - temp |= iocurrent; - 80077ee: 693a ldr r2, [r7, #16] - 80077f0: 68fb ldr r3, [r7, #12] - 80077f2: 4313 orrs r3, r2 - 80077f4: 613b str r3, [r7, #16] - } - EXTI->IMR1 = temp; - 80077f6: 4909 ldr r1, [pc, #36] ; (800781c ) - 80077f8: 2280 movs r2, #128 ; 0x80 - 80077fa: 693b ldr r3, [r7, #16] - 80077fc: 508b str r3, [r1, r2] - } - } - - position++; - 80077fe: 697b ldr r3, [r7, #20] - 8007800: 3301 adds r3, #1 - 8007802: 617b str r3, [r7, #20] - while (((GPIO_Init->Pin) >> position) != 0x00u) - 8007804: 683b ldr r3, [r7, #0] - 8007806: 681a ldr r2, [r3, #0] - 8007808: 697b ldr r3, [r7, #20] - 800780a: 40da lsrs r2, r3 - 800780c: 1e13 subs r3, r2, #0 - 800780e: d000 beq.n 8007812 - 8007810: e6b0 b.n 8007574 - } -} - 8007812: 46c0 nop ; (mov r8, r8) - 8007814: 46c0 nop ; (mov r8, r8) - 8007816: 46bd mov sp, r7 - 8007818: b006 add sp, #24 - 800781a: bd80 pop {r7, pc} - 800781c: 40021800 .word 0x40021800 - 8007820: 50000400 .word 0x50000400 - 8007824: 50000800 .word 0x50000800 - 8007828: 50000c00 .word 0x50000c00 - -0800782c : - * @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) -{ - 800782c: b580 push {r7, lr} - 800782e: b082 sub sp, #8 - 8007830: af00 add r7, sp, #0 - 8007832: 6078 str r0, [r7, #4] - 8007834: 0008 movs r0, r1 - 8007836: 0011 movs r1, r2 - 8007838: 1cbb adds r3, r7, #2 - 800783a: 1c02 adds r2, r0, #0 - 800783c: 801a strh r2, [r3, #0] - 800783e: 1c7b adds r3, r7, #1 - 8007840: 1c0a adds r2, r1, #0 - 8007842: 701a strb r2, [r3, #0] - /* Check the parameters */ - assert_param(IS_GPIO_PIN(GPIO_Pin)); - assert_param(IS_GPIO_PIN_ACTION(PinState)); - - if (PinState != GPIO_PIN_RESET) - 8007844: 1c7b adds r3, r7, #1 - 8007846: 781b ldrb r3, [r3, #0] - 8007848: 2b00 cmp r3, #0 - 800784a: d004 beq.n 8007856 - { - GPIOx->BSRR = (uint32_t)GPIO_Pin; - 800784c: 1cbb adds r3, r7, #2 - 800784e: 881a ldrh r2, [r3, #0] - 8007850: 687b ldr r3, [r7, #4] - 8007852: 619a str r2, [r3, #24] - } - else - { - GPIOx->BRR = (uint32_t)GPIO_Pin; - } -} - 8007854: e003 b.n 800785e - GPIOx->BRR = (uint32_t)GPIO_Pin; - 8007856: 1cbb adds r3, r7, #2 - 8007858: 881a ldrh r2, [r3, #0] - 800785a: 687b ldr r3, [r7, #4] - 800785c: 629a str r2, [r3, #40] ; 0x28 -} - 800785e: 46c0 nop ; (mov r8, r8) - 8007860: 46bd mov sp, r7 - 8007862: b002 add sp, #8 - 8007864: bd80 pop {r7, pc} - ... - -08007868 : - * cleared before returning the status. If the flag is not cleared within - * 6 microseconds, HAL_TIMEOUT status is reported. - * @retval HAL Status - */ -HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling) -{ - 8007868: b580 push {r7, lr} - 800786a: b084 sub sp, #16 - 800786c: af00 add r7, sp, #0 - 800786e: 6078 str r0, [r7, #4] - uint32_t wait_loop_index; - - assert_param(IS_PWR_VOLTAGE_SCALING_RANGE(VoltageScaling)); - - /* Modify voltage scaling range */ - MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); - 8007870: 4b19 ldr r3, [pc, #100] ; (80078d8 ) - 8007872: 681b ldr r3, [r3, #0] - 8007874: 4a19 ldr r2, [pc, #100] ; (80078dc ) - 8007876: 4013 ands r3, r2 - 8007878: 0019 movs r1, r3 - 800787a: 4b17 ldr r3, [pc, #92] ; (80078d8 ) - 800787c: 687a ldr r2, [r7, #4] - 800787e: 430a orrs r2, r1 - 8007880: 601a str r2, [r3, #0] - - /* In case of Range 1 selected, we need to ensure that main regulator reaches new value */ - if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE1) - 8007882: 687a ldr r2, [r7, #4] - 8007884: 2380 movs r3, #128 ; 0x80 - 8007886: 009b lsls r3, r3, #2 - 8007888: 429a cmp r2, r3 - 800788a: d11f bne.n 80078cc - { - /* Set timeout value */ - wait_loop_index = ((PWR_VOSF_SETTING_DELAY_6_US * SystemCoreClock) / 1000000U) + 1U; - 800788c: 4b14 ldr r3, [pc, #80] ; (80078e0 ) - 800788e: 681a ldr r2, [r3, #0] - 8007890: 0013 movs r3, r2 - 8007892: 005b lsls r3, r3, #1 - 8007894: 189b adds r3, r3, r2 - 8007896: 005b lsls r3, r3, #1 - 8007898: 4912 ldr r1, [pc, #72] ; (80078e4 ) - 800789a: 0018 movs r0, r3 - 800789c: f7f8 fc46 bl 800012c <__udivsi3> - 80078a0: 0003 movs r3, r0 - 80078a2: 3301 adds r3, #1 - 80078a4: 60fb str r3, [r7, #12] - - /* Wait until VOSF is reset */ - while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) - 80078a6: e008 b.n 80078ba - { - if (wait_loop_index != 0U) - 80078a8: 68fb ldr r3, [r7, #12] - 80078aa: 2b00 cmp r3, #0 - 80078ac: d003 beq.n 80078b6 - { - wait_loop_index--; - 80078ae: 68fb ldr r3, [r7, #12] - 80078b0: 3b01 subs r3, #1 - 80078b2: 60fb str r3, [r7, #12] - 80078b4: e001 b.n 80078ba - } - else - { - return HAL_TIMEOUT; - 80078b6: 2303 movs r3, #3 - 80078b8: e009 b.n 80078ce - while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) - 80078ba: 4b07 ldr r3, [pc, #28] ; (80078d8 ) - 80078bc: 695a ldr r2, [r3, #20] - 80078be: 2380 movs r3, #128 ; 0x80 - 80078c0: 00db lsls r3, r3, #3 - 80078c2: 401a ands r2, r3 - 80078c4: 2380 movs r3, #128 ; 0x80 - 80078c6: 00db lsls r3, r3, #3 - 80078c8: 429a cmp r2, r3 - 80078ca: d0ed beq.n 80078a8 - } - } - } - - return HAL_OK; - 80078cc: 2300 movs r3, #0 -} - 80078ce: 0018 movs r0, r3 - 80078d0: 46bd mov sp, r7 - 80078d2: b004 add sp, #16 - 80078d4: bd80 pop {r7, pc} - 80078d6: 46c0 nop ; (mov r8, r8) - 80078d8: 40007000 .word 0x40007000 - 80078dc: fffff9ff .word 0xfffff9ff - 80078e0: 20000040 .word 0x20000040 - 80078e4: 000f4240 .word 0x000f4240 - -080078e8 : - * @arg @ref LL_RCC_APB1_DIV_4 - * @arg @ref LL_RCC_APB1_DIV_8 - * @arg @ref LL_RCC_APB1_DIV_16 - */ -__STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) -{ - 80078e8: b580 push {r7, lr} - 80078ea: af00 add r7, sp, #0 - return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE)); - 80078ec: 4b03 ldr r3, [pc, #12] ; (80078fc ) - 80078ee: 689a ldr r2, [r3, #8] - 80078f0: 23e0 movs r3, #224 ; 0xe0 - 80078f2: 01db lsls r3, r3, #7 - 80078f4: 4013 ands r3, r2 -} - 80078f6: 0018 movs r0, r3 - 80078f8: 46bd mov sp, r7 - 80078fa: bd80 pop {r7, pc} - 80078fc: 40021000 .word 0x40021000 - -08007900 : - * supported by this function. User should request a transition to LSE Off - * first and then to LSE On or LSE Bypass. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) -{ - 8007900: b580 push {r7, lr} - 8007902: b088 sub sp, #32 - 8007904: af00 add r7, sp, #0 - 8007906: 6078 str r0, [r7, #4] - uint32_t tickstart; - uint32_t temp_sysclksrc; - uint32_t temp_pllckcfg; - - /* Check Null pointer */ - if (RCC_OscInitStruct == NULL) - 8007908: 687b ldr r3, [r7, #4] - 800790a: 2b00 cmp r3, #0 - 800790c: d101 bne.n 8007912 - { - return HAL_ERROR; - 800790e: 2301 movs r3, #1 - 8007910: e2f3 b.n 8007efa - - /* Check the parameters */ - assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); - - /*------------------------------- HSE Configuration ------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 8007912: 687b ldr r3, [r7, #4] - 8007914: 681b ldr r3, [r3, #0] - 8007916: 2201 movs r2, #1 - 8007918: 4013 ands r3, r2 - 800791a: d100 bne.n 800791e - 800791c: e07c b.n 8007a18 - { - /* Check the parameters */ - assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); - - temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 800791e: 4bc3 ldr r3, [pc, #780] ; (8007c2c ) - 8007920: 689b ldr r3, [r3, #8] - 8007922: 2238 movs r2, #56 ; 0x38 - 8007924: 4013 ands r3, r2 - 8007926: 61bb str r3, [r7, #24] - temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); - 8007928: 4bc0 ldr r3, [pc, #768] ; (8007c2c ) - 800792a: 68db ldr r3, [r3, #12] - 800792c: 2203 movs r2, #3 - 800792e: 4013 ands r3, r2 - 8007930: 617b str r3, [r7, #20] - - /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ - if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSE)) - 8007932: 69bb ldr r3, [r7, #24] - 8007934: 2b10 cmp r3, #16 - 8007936: d102 bne.n 800793e - 8007938: 697b ldr r3, [r7, #20] - 800793a: 2b03 cmp r3, #3 - 800793c: d002 beq.n 8007944 - || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSE)) - 800793e: 69bb ldr r3, [r7, #24] - 8007940: 2b08 cmp r3, #8 - 8007942: d10b bne.n 800795c - { - if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8007944: 4bb9 ldr r3, [pc, #740] ; (8007c2c ) - 8007946: 681a ldr r2, [r3, #0] - 8007948: 2380 movs r3, #128 ; 0x80 - 800794a: 029b lsls r3, r3, #10 - 800794c: 4013 ands r3, r2 - 800794e: d062 beq.n 8007a16 - 8007950: 687b ldr r3, [r7, #4] - 8007952: 685b ldr r3, [r3, #4] - 8007954: 2b00 cmp r3, #0 - 8007956: d15e bne.n 8007a16 - { - return HAL_ERROR; - 8007958: 2301 movs r3, #1 - 800795a: e2ce b.n 8007efa - } - } - else - { - /* Set the new HSE configuration ---------------------------------------*/ - __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 800795c: 687b ldr r3, [r7, #4] - 800795e: 685a ldr r2, [r3, #4] - 8007960: 2380 movs r3, #128 ; 0x80 - 8007962: 025b lsls r3, r3, #9 - 8007964: 429a cmp r2, r3 - 8007966: d107 bne.n 8007978 - 8007968: 4bb0 ldr r3, [pc, #704] ; (8007c2c ) - 800796a: 681a ldr r2, [r3, #0] - 800796c: 4baf ldr r3, [pc, #700] ; (8007c2c ) - 800796e: 2180 movs r1, #128 ; 0x80 - 8007970: 0249 lsls r1, r1, #9 - 8007972: 430a orrs r2, r1 - 8007974: 601a str r2, [r3, #0] - 8007976: e020 b.n 80079ba - 8007978: 687b ldr r3, [r7, #4] - 800797a: 685a ldr r2, [r3, #4] - 800797c: 23a0 movs r3, #160 ; 0xa0 - 800797e: 02db lsls r3, r3, #11 - 8007980: 429a cmp r2, r3 - 8007982: d10e bne.n 80079a2 - 8007984: 4ba9 ldr r3, [pc, #676] ; (8007c2c ) - 8007986: 681a ldr r2, [r3, #0] - 8007988: 4ba8 ldr r3, [pc, #672] ; (8007c2c ) - 800798a: 2180 movs r1, #128 ; 0x80 - 800798c: 02c9 lsls r1, r1, #11 - 800798e: 430a orrs r2, r1 - 8007990: 601a str r2, [r3, #0] - 8007992: 4ba6 ldr r3, [pc, #664] ; (8007c2c ) - 8007994: 681a ldr r2, [r3, #0] - 8007996: 4ba5 ldr r3, [pc, #660] ; (8007c2c ) - 8007998: 2180 movs r1, #128 ; 0x80 - 800799a: 0249 lsls r1, r1, #9 - 800799c: 430a orrs r2, r1 - 800799e: 601a str r2, [r3, #0] - 80079a0: e00b b.n 80079ba - 80079a2: 4ba2 ldr r3, [pc, #648] ; (8007c2c ) - 80079a4: 681a ldr r2, [r3, #0] - 80079a6: 4ba1 ldr r3, [pc, #644] ; (8007c2c ) - 80079a8: 49a1 ldr r1, [pc, #644] ; (8007c30 ) - 80079aa: 400a ands r2, r1 - 80079ac: 601a str r2, [r3, #0] - 80079ae: 4b9f ldr r3, [pc, #636] ; (8007c2c ) - 80079b0: 681a ldr r2, [r3, #0] - 80079b2: 4b9e ldr r3, [pc, #632] ; (8007c2c ) - 80079b4: 499f ldr r1, [pc, #636] ; (8007c34 ) - 80079b6: 400a ands r2, r1 - 80079b8: 601a str r2, [r3, #0] - - /* Check the HSE State */ - if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 80079ba: 687b ldr r3, [r7, #4] - 80079bc: 685b ldr r3, [r3, #4] - 80079be: 2b00 cmp r3, #0 - 80079c0: d014 beq.n 80079ec - { - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 80079c2: f7fe fc4d bl 8006260 - 80079c6: 0003 movs r3, r0 - 80079c8: 613b str r3, [r7, #16] - - /* Wait till HSE is ready */ - while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 80079ca: e008 b.n 80079de - { - if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80079cc: f7fe fc48 bl 8006260 - 80079d0: 0002 movs r2, r0 - 80079d2: 693b ldr r3, [r7, #16] - 80079d4: 1ad3 subs r3, r2, r3 - 80079d6: 2b64 cmp r3, #100 ; 0x64 - 80079d8: d901 bls.n 80079de - { - return HAL_TIMEOUT; - 80079da: 2303 movs r3, #3 - 80079dc: e28d b.n 8007efa - while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 80079de: 4b93 ldr r3, [pc, #588] ; (8007c2c ) - 80079e0: 681a ldr r2, [r3, #0] - 80079e2: 2380 movs r3, #128 ; 0x80 - 80079e4: 029b lsls r3, r3, #10 - 80079e6: 4013 ands r3, r2 - 80079e8: d0f0 beq.n 80079cc - 80079ea: e015 b.n 8007a18 - } - } - else - { - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 80079ec: f7fe fc38 bl 8006260 - 80079f0: 0003 movs r3, r0 - 80079f2: 613b str r3, [r7, #16] - - /* Wait till HSE is disabled */ - while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) - 80079f4: e008 b.n 8007a08 - { - if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80079f6: f7fe fc33 bl 8006260 - 80079fa: 0002 movs r2, r0 - 80079fc: 693b ldr r3, [r7, #16] - 80079fe: 1ad3 subs r3, r2, r3 - 8007a00: 2b64 cmp r3, #100 ; 0x64 - 8007a02: d901 bls.n 8007a08 - { - return HAL_TIMEOUT; - 8007a04: 2303 movs r3, #3 - 8007a06: e278 b.n 8007efa - while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) - 8007a08: 4b88 ldr r3, [pc, #544] ; (8007c2c ) - 8007a0a: 681a ldr r2, [r3, #0] - 8007a0c: 2380 movs r3, #128 ; 0x80 - 8007a0e: 029b lsls r3, r3, #10 - 8007a10: 4013 ands r3, r2 - 8007a12: d1f0 bne.n 80079f6 - 8007a14: e000 b.n 8007a18 - if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8007a16: 46c0 nop ; (mov r8, r8) - } - } - } - } - /*----------------------------- HSI Configuration --------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8007a18: 687b ldr r3, [r7, #4] - 8007a1a: 681b ldr r3, [r3, #0] - 8007a1c: 2202 movs r2, #2 - 8007a1e: 4013 ands r3, r2 - 8007a20: d100 bne.n 8007a24 - 8007a22: e099 b.n 8007b58 - assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); - assert_param(IS_RCC_HSI_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); - assert_param(IS_RCC_HSIDIV(RCC_OscInitStruct->HSIDiv)); - - /* Check if HSI16 is used as system clock or as PLL source when PLL is selected as system clock */ - temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 8007a24: 4b81 ldr r3, [pc, #516] ; (8007c2c ) - 8007a26: 689b ldr r3, [r3, #8] - 8007a28: 2238 movs r2, #56 ; 0x38 - 8007a2a: 4013 ands r3, r2 - 8007a2c: 61bb str r3, [r7, #24] - temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); - 8007a2e: 4b7f ldr r3, [pc, #508] ; (8007c2c ) - 8007a30: 68db ldr r3, [r3, #12] - 8007a32: 2203 movs r2, #3 - 8007a34: 4013 ands r3, r2 - 8007a36: 617b str r3, [r7, #20] - if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSI)) - 8007a38: 69bb ldr r3, [r7, #24] - 8007a3a: 2b10 cmp r3, #16 - 8007a3c: d102 bne.n 8007a44 - 8007a3e: 697b ldr r3, [r7, #20] - 8007a40: 2b02 cmp r3, #2 - 8007a42: d002 beq.n 8007a4a - || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI)) - 8007a44: 69bb ldr r3, [r7, #24] - 8007a46: 2b00 cmp r3, #0 - 8007a48: d135 bne.n 8007ab6 - { - /* When HSI is used as system clock or as PLL input clock it can not be disabled */ - if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 8007a4a: 4b78 ldr r3, [pc, #480] ; (8007c2c ) - 8007a4c: 681a ldr r2, [r3, #0] - 8007a4e: 2380 movs r3, #128 ; 0x80 - 8007a50: 00db lsls r3, r3, #3 - 8007a52: 4013 ands r3, r2 - 8007a54: d005 beq.n 8007a62 - 8007a56: 687b ldr r3, [r7, #4] - 8007a58: 68db ldr r3, [r3, #12] - 8007a5a: 2b00 cmp r3, #0 - 8007a5c: d101 bne.n 8007a62 - { - return HAL_ERROR; - 8007a5e: 2301 movs r3, #1 - 8007a60: e24b b.n 8007efa - } - /* Otherwise, just the calibration is allowed */ - else - { - /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ - __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8007a62: 4b72 ldr r3, [pc, #456] ; (8007c2c ) - 8007a64: 685b ldr r3, [r3, #4] - 8007a66: 4a74 ldr r2, [pc, #464] ; (8007c38 ) - 8007a68: 4013 ands r3, r2 - 8007a6a: 0019 movs r1, r3 - 8007a6c: 687b ldr r3, [r7, #4] - 8007a6e: 695b ldr r3, [r3, #20] - 8007a70: 021a lsls r2, r3, #8 - 8007a72: 4b6e ldr r3, [pc, #440] ; (8007c2c ) - 8007a74: 430a orrs r2, r1 - 8007a76: 605a str r2, [r3, #4] - - if (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI) - 8007a78: 69bb ldr r3, [r7, #24] - 8007a7a: 2b00 cmp r3, #0 - 8007a7c: d112 bne.n 8007aa4 - { - /* Adjust the HSI16 division factor */ - __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); - 8007a7e: 4b6b ldr r3, [pc, #428] ; (8007c2c ) - 8007a80: 681b ldr r3, [r3, #0] - 8007a82: 4a6e ldr r2, [pc, #440] ; (8007c3c ) - 8007a84: 4013 ands r3, r2 - 8007a86: 0019 movs r1, r3 - 8007a88: 687b ldr r3, [r7, #4] - 8007a8a: 691a ldr r2, [r3, #16] - 8007a8c: 4b67 ldr r3, [pc, #412] ; (8007c2c ) - 8007a8e: 430a orrs r2, r1 - 8007a90: 601a str r2, [r3, #0] - - /* Update the SystemCoreClock global variable with HSISYS value */ - SystemCoreClock = (HSI_VALUE / (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos))); - 8007a92: 4b66 ldr r3, [pc, #408] ; (8007c2c ) - 8007a94: 681b ldr r3, [r3, #0] - 8007a96: 0adb lsrs r3, r3, #11 - 8007a98: 2207 movs r2, #7 - 8007a9a: 4013 ands r3, r2 - 8007a9c: 4a68 ldr r2, [pc, #416] ; (8007c40 ) - 8007a9e: 40da lsrs r2, r3 - 8007aa0: 4b68 ldr r3, [pc, #416] ; (8007c44 ) - 8007aa2: 601a str r2, [r3, #0] - } - - /* Adapt Systick interrupt period */ - if (HAL_InitTick(uwTickPrio) != HAL_OK) - 8007aa4: 4b68 ldr r3, [pc, #416] ; (8007c48 ) - 8007aa6: 681b ldr r3, [r3, #0] - 8007aa8: 0018 movs r0, r3 - 8007aaa: f7fd fe61 bl 8005770 - 8007aae: 1e03 subs r3, r0, #0 - 8007ab0: d051 beq.n 8007b56 - { - return HAL_ERROR; - 8007ab2: 2301 movs r3, #1 - 8007ab4: e221 b.n 8007efa - } - } - else - { - /* Check the HSI State */ - if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 8007ab6: 687b ldr r3, [r7, #4] - 8007ab8: 68db ldr r3, [r3, #12] - 8007aba: 2b00 cmp r3, #0 - 8007abc: d030 beq.n 8007b20 - { - /* Configure the HSI16 division factor */ - __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); - 8007abe: 4b5b ldr r3, [pc, #364] ; (8007c2c ) - 8007ac0: 681b ldr r3, [r3, #0] - 8007ac2: 4a5e ldr r2, [pc, #376] ; (8007c3c ) - 8007ac4: 4013 ands r3, r2 - 8007ac6: 0019 movs r1, r3 - 8007ac8: 687b ldr r3, [r7, #4] - 8007aca: 691a ldr r2, [r3, #16] - 8007acc: 4b57 ldr r3, [pc, #348] ; (8007c2c ) - 8007ace: 430a orrs r2, r1 - 8007ad0: 601a str r2, [r3, #0] - - /* Enable the Internal High Speed oscillator (HSI16). */ - __HAL_RCC_HSI_ENABLE(); - 8007ad2: 4b56 ldr r3, [pc, #344] ; (8007c2c ) - 8007ad4: 681a ldr r2, [r3, #0] - 8007ad6: 4b55 ldr r3, [pc, #340] ; (8007c2c ) - 8007ad8: 2180 movs r1, #128 ; 0x80 - 8007ada: 0049 lsls r1, r1, #1 - 8007adc: 430a orrs r2, r1 - 8007ade: 601a str r2, [r3, #0] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007ae0: f7fe fbbe bl 8006260 - 8007ae4: 0003 movs r3, r0 - 8007ae6: 613b str r3, [r7, #16] - - /* Wait till HSI is ready */ - while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8007ae8: e008 b.n 8007afc - { - if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8007aea: f7fe fbb9 bl 8006260 - 8007aee: 0002 movs r2, r0 - 8007af0: 693b ldr r3, [r7, #16] - 8007af2: 1ad3 subs r3, r2, r3 - 8007af4: 2b02 cmp r3, #2 - 8007af6: d901 bls.n 8007afc - { - return HAL_TIMEOUT; - 8007af8: 2303 movs r3, #3 - 8007afa: e1fe b.n 8007efa - while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8007afc: 4b4b ldr r3, [pc, #300] ; (8007c2c ) - 8007afe: 681a ldr r2, [r3, #0] - 8007b00: 2380 movs r3, #128 ; 0x80 - 8007b02: 00db lsls r3, r3, #3 - 8007b04: 4013 ands r3, r2 - 8007b06: d0f0 beq.n 8007aea - } - } - - /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ - __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8007b08: 4b48 ldr r3, [pc, #288] ; (8007c2c ) - 8007b0a: 685b ldr r3, [r3, #4] - 8007b0c: 4a4a ldr r2, [pc, #296] ; (8007c38 ) - 8007b0e: 4013 ands r3, r2 - 8007b10: 0019 movs r1, r3 - 8007b12: 687b ldr r3, [r7, #4] - 8007b14: 695b ldr r3, [r3, #20] - 8007b16: 021a lsls r2, r3, #8 - 8007b18: 4b44 ldr r3, [pc, #272] ; (8007c2c ) - 8007b1a: 430a orrs r2, r1 - 8007b1c: 605a str r2, [r3, #4] - 8007b1e: e01b b.n 8007b58 - } - else - { - /* Disable the Internal High Speed oscillator (HSI16). */ - __HAL_RCC_HSI_DISABLE(); - 8007b20: 4b42 ldr r3, [pc, #264] ; (8007c2c ) - 8007b22: 681a ldr r2, [r3, #0] - 8007b24: 4b41 ldr r3, [pc, #260] ; (8007c2c ) - 8007b26: 4949 ldr r1, [pc, #292] ; (8007c4c ) - 8007b28: 400a ands r2, r1 - 8007b2a: 601a str r2, [r3, #0] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007b2c: f7fe fb98 bl 8006260 - 8007b30: 0003 movs r3, r0 - 8007b32: 613b str r3, [r7, #16] - - /* Wait till HSI is disabled */ - while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) - 8007b34: e008 b.n 8007b48 - { - if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8007b36: f7fe fb93 bl 8006260 - 8007b3a: 0002 movs r2, r0 - 8007b3c: 693b ldr r3, [r7, #16] - 8007b3e: 1ad3 subs r3, r2, r3 - 8007b40: 2b02 cmp r3, #2 - 8007b42: d901 bls.n 8007b48 - { - return HAL_TIMEOUT; - 8007b44: 2303 movs r3, #3 - 8007b46: e1d8 b.n 8007efa - while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) - 8007b48: 4b38 ldr r3, [pc, #224] ; (8007c2c ) - 8007b4a: 681a ldr r2, [r3, #0] - 8007b4c: 2380 movs r3, #128 ; 0x80 - 8007b4e: 00db lsls r3, r3, #3 - 8007b50: 4013 ands r3, r2 - 8007b52: d1f0 bne.n 8007b36 - 8007b54: e000 b.n 8007b58 - if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 8007b56: 46c0 nop ; (mov r8, r8) - } - } - } - } - /*------------------------------ LSI Configuration -------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 8007b58: 687b ldr r3, [r7, #4] - 8007b5a: 681b ldr r3, [r3, #0] - 8007b5c: 2208 movs r2, #8 - 8007b5e: 4013 ands r3, r2 - 8007b60: d047 beq.n 8007bf2 - { - /* Check the parameters */ - assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); - - /* Check if LSI is used as system clock */ - if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) - 8007b62: 4b32 ldr r3, [pc, #200] ; (8007c2c ) - 8007b64: 689b ldr r3, [r3, #8] - 8007b66: 2238 movs r2, #56 ; 0x38 - 8007b68: 4013 ands r3, r2 - 8007b6a: 2b18 cmp r3, #24 - 8007b6c: d10a bne.n 8007b84 - { - /* When LSI is used as system clock it will not be disabled */ - if ((((RCC->CSR) & RCC_CSR_LSIRDY) != 0U) && (RCC_OscInitStruct->LSIState == RCC_LSI_OFF)) - 8007b6e: 4b2f ldr r3, [pc, #188] ; (8007c2c ) - 8007b70: 6e1b ldr r3, [r3, #96] ; 0x60 - 8007b72: 2202 movs r2, #2 - 8007b74: 4013 ands r3, r2 - 8007b76: d03c beq.n 8007bf2 - 8007b78: 687b ldr r3, [r7, #4] - 8007b7a: 699b ldr r3, [r3, #24] - 8007b7c: 2b00 cmp r3, #0 - 8007b7e: d138 bne.n 8007bf2 - { - return HAL_ERROR; - 8007b80: 2301 movs r3, #1 - 8007b82: e1ba b.n 8007efa - } - } - else - { - /* Check the LSI State */ - if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 8007b84: 687b ldr r3, [r7, #4] - 8007b86: 699b ldr r3, [r3, #24] - 8007b88: 2b00 cmp r3, #0 - 8007b8a: d019 beq.n 8007bc0 - { - /* Enable the Internal Low Speed oscillator (LSI). */ - __HAL_RCC_LSI_ENABLE(); - 8007b8c: 4b27 ldr r3, [pc, #156] ; (8007c2c ) - 8007b8e: 6e1a ldr r2, [r3, #96] ; 0x60 - 8007b90: 4b26 ldr r3, [pc, #152] ; (8007c2c ) - 8007b92: 2101 movs r1, #1 - 8007b94: 430a orrs r2, r1 - 8007b96: 661a str r2, [r3, #96] ; 0x60 - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007b98: f7fe fb62 bl 8006260 - 8007b9c: 0003 movs r3, r0 - 8007b9e: 613b str r3, [r7, #16] - - /* Wait till LSI is ready */ - while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 8007ba0: e008 b.n 8007bb4 - { - if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8007ba2: f7fe fb5d bl 8006260 - 8007ba6: 0002 movs r2, r0 - 8007ba8: 693b ldr r3, [r7, #16] - 8007baa: 1ad3 subs r3, r2, r3 - 8007bac: 2b02 cmp r3, #2 - 8007bae: d901 bls.n 8007bb4 - { - return HAL_TIMEOUT; - 8007bb0: 2303 movs r3, #3 - 8007bb2: e1a2 b.n 8007efa - while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 8007bb4: 4b1d ldr r3, [pc, #116] ; (8007c2c ) - 8007bb6: 6e1b ldr r3, [r3, #96] ; 0x60 - 8007bb8: 2202 movs r2, #2 - 8007bba: 4013 ands r3, r2 - 8007bbc: d0f1 beq.n 8007ba2 - 8007bbe: e018 b.n 8007bf2 - } - } - else - { - /* Disable the Internal Low Speed oscillator (LSI). */ - __HAL_RCC_LSI_DISABLE(); - 8007bc0: 4b1a ldr r3, [pc, #104] ; (8007c2c ) - 8007bc2: 6e1a ldr r2, [r3, #96] ; 0x60 - 8007bc4: 4b19 ldr r3, [pc, #100] ; (8007c2c ) - 8007bc6: 2101 movs r1, #1 - 8007bc8: 438a bics r2, r1 - 8007bca: 661a str r2, [r3, #96] ; 0x60 - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007bcc: f7fe fb48 bl 8006260 - 8007bd0: 0003 movs r3, r0 - 8007bd2: 613b str r3, [r7, #16] - - /* Wait till LSI is disabled */ - while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) - 8007bd4: e008 b.n 8007be8 - { - if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8007bd6: f7fe fb43 bl 8006260 - 8007bda: 0002 movs r2, r0 - 8007bdc: 693b ldr r3, [r7, #16] - 8007bde: 1ad3 subs r3, r2, r3 - 8007be0: 2b02 cmp r3, #2 - 8007be2: d901 bls.n 8007be8 - { - return HAL_TIMEOUT; - 8007be4: 2303 movs r3, #3 - 8007be6: e188 b.n 8007efa - while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) - 8007be8: 4b10 ldr r3, [pc, #64] ; (8007c2c ) - 8007bea: 6e1b ldr r3, [r3, #96] ; 0x60 - 8007bec: 2202 movs r2, #2 - 8007bee: 4013 ands r3, r2 - 8007bf0: d1f1 bne.n 8007bd6 - } - } - } - } - /*------------------------------ LSE Configuration -------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8007bf2: 687b ldr r3, [r7, #4] - 8007bf4: 681b ldr r3, [r3, #0] - 8007bf6: 2204 movs r2, #4 - 8007bf8: 4013 ands r3, r2 - 8007bfa: d100 bne.n 8007bfe - 8007bfc: e0c6 b.n 8007d8c - { - FlagStatus pwrclkchanged = RESET; - 8007bfe: 231f movs r3, #31 - 8007c00: 18fb adds r3, r7, r3 - 8007c02: 2200 movs r2, #0 - 8007c04: 701a strb r2, [r3, #0] - - /* Check the parameters */ - assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); - - /* When the LSE is used as system clock, it is not allowed disable it */ - if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) - 8007c06: 4b09 ldr r3, [pc, #36] ; (8007c2c ) - 8007c08: 689b ldr r3, [r3, #8] - 8007c0a: 2238 movs r2, #56 ; 0x38 - 8007c0c: 4013 ands r3, r2 - 8007c0e: 2b20 cmp r3, #32 - 8007c10: d11e bne.n 8007c50 - { - if ((((RCC->BDCR) & RCC_BDCR_LSERDY) != 0U) && (RCC_OscInitStruct->LSEState == RCC_LSE_OFF)) - 8007c12: 4b06 ldr r3, [pc, #24] ; (8007c2c ) - 8007c14: 6ddb ldr r3, [r3, #92] ; 0x5c - 8007c16: 2202 movs r2, #2 - 8007c18: 4013 ands r3, r2 - 8007c1a: d100 bne.n 8007c1e - 8007c1c: e0b6 b.n 8007d8c - 8007c1e: 687b ldr r3, [r7, #4] - 8007c20: 689b ldr r3, [r3, #8] - 8007c22: 2b00 cmp r3, #0 - 8007c24: d000 beq.n 8007c28 - 8007c26: e0b1 b.n 8007d8c - { - return HAL_ERROR; - 8007c28: 2301 movs r3, #1 - 8007c2a: e166 b.n 8007efa - 8007c2c: 40021000 .word 0x40021000 - 8007c30: fffeffff .word 0xfffeffff - 8007c34: fffbffff .word 0xfffbffff - 8007c38: ffff80ff .word 0xffff80ff - 8007c3c: ffffc7ff .word 0xffffc7ff - 8007c40: 00f42400 .word 0x00f42400 - 8007c44: 20000040 .word 0x20000040 - 8007c48: 20000044 .word 0x20000044 - 8007c4c: fffffeff .word 0xfffffeff - } - else - { - /* 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() != 0U) - 8007c50: 4bac ldr r3, [pc, #688] ; (8007f04 ) - 8007c52: 6bda ldr r2, [r3, #60] ; 0x3c - 8007c54: 2380 movs r3, #128 ; 0x80 - 8007c56: 055b lsls r3, r3, #21 - 8007c58: 4013 ands r3, r2 - 8007c5a: d101 bne.n 8007c60 - 8007c5c: 2301 movs r3, #1 - 8007c5e: e000 b.n 8007c62 - 8007c60: 2300 movs r3, #0 - 8007c62: 2b00 cmp r3, #0 - 8007c64: d011 beq.n 8007c8a - { - __HAL_RCC_PWR_CLK_ENABLE(); - 8007c66: 4ba7 ldr r3, [pc, #668] ; (8007f04 ) - 8007c68: 6bda ldr r2, [r3, #60] ; 0x3c - 8007c6a: 4ba6 ldr r3, [pc, #664] ; (8007f04 ) - 8007c6c: 2180 movs r1, #128 ; 0x80 - 8007c6e: 0549 lsls r1, r1, #21 - 8007c70: 430a orrs r2, r1 - 8007c72: 63da str r2, [r3, #60] ; 0x3c - 8007c74: 4ba3 ldr r3, [pc, #652] ; (8007f04 ) - 8007c76: 6bda ldr r2, [r3, #60] ; 0x3c - 8007c78: 2380 movs r3, #128 ; 0x80 - 8007c7a: 055b lsls r3, r3, #21 - 8007c7c: 4013 ands r3, r2 - 8007c7e: 60fb str r3, [r7, #12] - 8007c80: 68fb ldr r3, [r7, #12] - pwrclkchanged = SET; - 8007c82: 231f movs r3, #31 - 8007c84: 18fb adds r3, r7, r3 - 8007c86: 2201 movs r2, #1 - 8007c88: 701a strb r2, [r3, #0] - } - - if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 8007c8a: 4b9f ldr r3, [pc, #636] ; (8007f08 ) - 8007c8c: 681a ldr r2, [r3, #0] - 8007c8e: 2380 movs r3, #128 ; 0x80 - 8007c90: 005b lsls r3, r3, #1 - 8007c92: 4013 ands r3, r2 - 8007c94: d11a bne.n 8007ccc - { - /* Enable write access to Backup domain */ - SET_BIT(PWR->CR1, PWR_CR1_DBP); - 8007c96: 4b9c ldr r3, [pc, #624] ; (8007f08 ) - 8007c98: 681a ldr r2, [r3, #0] - 8007c9a: 4b9b ldr r3, [pc, #620] ; (8007f08 ) - 8007c9c: 2180 movs r1, #128 ; 0x80 - 8007c9e: 0049 lsls r1, r1, #1 - 8007ca0: 430a orrs r2, r1 - 8007ca2: 601a str r2, [r3, #0] - - /* Wait for Backup domain Write protection disable */ - tickstart = HAL_GetTick(); - 8007ca4: f7fe fadc bl 8006260 - 8007ca8: 0003 movs r3, r0 - 8007caa: 613b str r3, [r7, #16] - - while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 8007cac: e008 b.n 8007cc0 - { - if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8007cae: f7fe fad7 bl 8006260 - 8007cb2: 0002 movs r2, r0 - 8007cb4: 693b ldr r3, [r7, #16] - 8007cb6: 1ad3 subs r3, r2, r3 - 8007cb8: 2b02 cmp r3, #2 - 8007cba: d901 bls.n 8007cc0 - { - return HAL_TIMEOUT; - 8007cbc: 2303 movs r3, #3 - 8007cbe: e11c b.n 8007efa - while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 8007cc0: 4b91 ldr r3, [pc, #580] ; (8007f08 ) - 8007cc2: 681a ldr r2, [r3, #0] - 8007cc4: 2380 movs r3, #128 ; 0x80 - 8007cc6: 005b lsls r3, r3, #1 - 8007cc8: 4013 ands r3, r2 - 8007cca: d0f0 beq.n 8007cae - } - } - } - - /* Set the new LSE configuration -----------------------------------------*/ - __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 8007ccc: 687b ldr r3, [r7, #4] - 8007cce: 689b ldr r3, [r3, #8] - 8007cd0: 2b01 cmp r3, #1 - 8007cd2: d106 bne.n 8007ce2 - 8007cd4: 4b8b ldr r3, [pc, #556] ; (8007f04 ) - 8007cd6: 6dda ldr r2, [r3, #92] ; 0x5c - 8007cd8: 4b8a ldr r3, [pc, #552] ; (8007f04 ) - 8007cda: 2101 movs r1, #1 - 8007cdc: 430a orrs r2, r1 - 8007cde: 65da str r2, [r3, #92] ; 0x5c - 8007ce0: e01c b.n 8007d1c - 8007ce2: 687b ldr r3, [r7, #4] - 8007ce4: 689b ldr r3, [r3, #8] - 8007ce6: 2b05 cmp r3, #5 - 8007ce8: d10c bne.n 8007d04 - 8007cea: 4b86 ldr r3, [pc, #536] ; (8007f04 ) - 8007cec: 6dda ldr r2, [r3, #92] ; 0x5c - 8007cee: 4b85 ldr r3, [pc, #532] ; (8007f04 ) - 8007cf0: 2104 movs r1, #4 - 8007cf2: 430a orrs r2, r1 - 8007cf4: 65da str r2, [r3, #92] ; 0x5c - 8007cf6: 4b83 ldr r3, [pc, #524] ; (8007f04 ) - 8007cf8: 6dda ldr r2, [r3, #92] ; 0x5c - 8007cfa: 4b82 ldr r3, [pc, #520] ; (8007f04 ) - 8007cfc: 2101 movs r1, #1 - 8007cfe: 430a orrs r2, r1 - 8007d00: 65da str r2, [r3, #92] ; 0x5c - 8007d02: e00b b.n 8007d1c - 8007d04: 4b7f ldr r3, [pc, #508] ; (8007f04 ) - 8007d06: 6dda ldr r2, [r3, #92] ; 0x5c - 8007d08: 4b7e ldr r3, [pc, #504] ; (8007f04 ) - 8007d0a: 2101 movs r1, #1 - 8007d0c: 438a bics r2, r1 - 8007d0e: 65da str r2, [r3, #92] ; 0x5c - 8007d10: 4b7c ldr r3, [pc, #496] ; (8007f04 ) - 8007d12: 6dda ldr r2, [r3, #92] ; 0x5c - 8007d14: 4b7b ldr r3, [pc, #492] ; (8007f04 ) - 8007d16: 2104 movs r1, #4 - 8007d18: 438a bics r2, r1 - 8007d1a: 65da str r2, [r3, #92] ; 0x5c - - /* Check the LSE State */ - if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 8007d1c: 687b ldr r3, [r7, #4] - 8007d1e: 689b ldr r3, [r3, #8] - 8007d20: 2b00 cmp r3, #0 - 8007d22: d014 beq.n 8007d4e - { - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007d24: f7fe fa9c bl 8006260 - 8007d28: 0003 movs r3, r0 - 8007d2a: 613b str r3, [r7, #16] - - /* Wait till LSE is ready */ - while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8007d2c: e009 b.n 8007d42 - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8007d2e: f7fe fa97 bl 8006260 - 8007d32: 0002 movs r2, r0 - 8007d34: 693b ldr r3, [r7, #16] - 8007d36: 1ad3 subs r3, r2, r3 - 8007d38: 4a74 ldr r2, [pc, #464] ; (8007f0c ) - 8007d3a: 4293 cmp r3, r2 - 8007d3c: d901 bls.n 8007d42 - { - return HAL_TIMEOUT; - 8007d3e: 2303 movs r3, #3 - 8007d40: e0db b.n 8007efa - while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8007d42: 4b70 ldr r3, [pc, #448] ; (8007f04 ) - 8007d44: 6ddb ldr r3, [r3, #92] ; 0x5c - 8007d46: 2202 movs r2, #2 - 8007d48: 4013 ands r3, r2 - 8007d4a: d0f0 beq.n 8007d2e - 8007d4c: e013 b.n 8007d76 - } - } - else - { - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007d4e: f7fe fa87 bl 8006260 - 8007d52: 0003 movs r3, r0 - 8007d54: 613b str r3, [r7, #16] - - /* Wait till LSE is disabled */ - while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) - 8007d56: e009 b.n 8007d6c - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8007d58: f7fe fa82 bl 8006260 - 8007d5c: 0002 movs r2, r0 - 8007d5e: 693b ldr r3, [r7, #16] - 8007d60: 1ad3 subs r3, r2, r3 - 8007d62: 4a6a ldr r2, [pc, #424] ; (8007f0c ) - 8007d64: 4293 cmp r3, r2 - 8007d66: d901 bls.n 8007d6c - { - return HAL_TIMEOUT; - 8007d68: 2303 movs r3, #3 - 8007d6a: e0c6 b.n 8007efa - while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) - 8007d6c: 4b65 ldr r3, [pc, #404] ; (8007f04 ) - 8007d6e: 6ddb ldr r3, [r3, #92] ; 0x5c - 8007d70: 2202 movs r2, #2 - 8007d72: 4013 ands r3, r2 - 8007d74: d1f0 bne.n 8007d58 - } - } - } - - /* Restore clock configuration if changed */ - if (pwrclkchanged == SET) - 8007d76: 231f movs r3, #31 - 8007d78: 18fb adds r3, r7, r3 - 8007d7a: 781b ldrb r3, [r3, #0] - 8007d7c: 2b01 cmp r3, #1 - 8007d7e: d105 bne.n 8007d8c - { - __HAL_RCC_PWR_CLK_DISABLE(); - 8007d80: 4b60 ldr r3, [pc, #384] ; (8007f04 ) - 8007d82: 6bda ldr r2, [r3, #60] ; 0x3c - 8007d84: 4b5f ldr r3, [pc, #380] ; (8007f04 ) - 8007d86: 4962 ldr r1, [pc, #392] ; (8007f10 ) - 8007d88: 400a ands r2, r1 - 8007d8a: 63da str r2, [r3, #60] ; 0x3c -#endif /* RCC_HSI48_SUPPORT */ - /*-------------------------------- PLL Configuration -----------------------*/ - /* Check the parameters */ - assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); - - if (RCC_OscInitStruct->PLL.PLLState != RCC_PLL_NONE) - 8007d8c: 687b ldr r3, [r7, #4] - 8007d8e: 69db ldr r3, [r3, #28] - 8007d90: 2b00 cmp r3, #0 - 8007d92: d100 bne.n 8007d96 - 8007d94: e0b0 b.n 8007ef8 - { - /* Check if the PLL is used as system clock or not */ - if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8007d96: 4b5b ldr r3, [pc, #364] ; (8007f04 ) - 8007d98: 689b ldr r3, [r3, #8] - 8007d9a: 2238 movs r2, #56 ; 0x38 - 8007d9c: 4013 ands r3, r2 - 8007d9e: 2b10 cmp r3, #16 - 8007da0: d100 bne.n 8007da4 - 8007da2: e078 b.n 8007e96 - { - if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON) - 8007da4: 687b ldr r3, [r7, #4] - 8007da6: 69db ldr r3, [r3, #28] - 8007da8: 2b02 cmp r3, #2 - 8007daa: d153 bne.n 8007e54 - assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); -#endif /* RCC_PLLQ_SUPPORT */ - assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); - - /* Disable the main PLL. */ - __HAL_RCC_PLL_DISABLE(); - 8007dac: 4b55 ldr r3, [pc, #340] ; (8007f04 ) - 8007dae: 681a ldr r2, [r3, #0] - 8007db0: 4b54 ldr r3, [pc, #336] ; (8007f04 ) - 8007db2: 4958 ldr r1, [pc, #352] ; (8007f14 ) - 8007db4: 400a ands r2, r1 - 8007db6: 601a str r2, [r3, #0] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007db8: f7fe fa52 bl 8006260 - 8007dbc: 0003 movs r3, r0 - 8007dbe: 613b str r3, [r7, #16] - - /* Wait till PLL is ready */ - while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8007dc0: e008 b.n 8007dd4 - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8007dc2: f7fe fa4d bl 8006260 - 8007dc6: 0002 movs r2, r0 - 8007dc8: 693b ldr r3, [r7, #16] - 8007dca: 1ad3 subs r3, r2, r3 - 8007dcc: 2b02 cmp r3, #2 - 8007dce: d901 bls.n 8007dd4 - { - return HAL_TIMEOUT; - 8007dd0: 2303 movs r3, #3 - 8007dd2: e092 b.n 8007efa - while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8007dd4: 4b4b ldr r3, [pc, #300] ; (8007f04 ) - 8007dd6: 681a ldr r2, [r3, #0] - 8007dd8: 2380 movs r3, #128 ; 0x80 - 8007dda: 049b lsls r3, r3, #18 - 8007ddc: 4013 ands r3, r2 - 8007dde: d1f0 bne.n 8007dc2 - RCC_OscInitStruct->PLL.PLLN, - RCC_OscInitStruct->PLL.PLLP, - RCC_OscInitStruct->PLL.PLLQ, - RCC_OscInitStruct->PLL.PLLR); -#else /* !RCC_PLLQ_SUPPORT */ - __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 8007de0: 4b48 ldr r3, [pc, #288] ; (8007f04 ) - 8007de2: 68db ldr r3, [r3, #12] - 8007de4: 4a4c ldr r2, [pc, #304] ; (8007f18 ) - 8007de6: 4013 ands r3, r2 - 8007de8: 0019 movs r1, r3 - 8007dea: 687b ldr r3, [r7, #4] - 8007dec: 6a1a ldr r2, [r3, #32] - 8007dee: 687b ldr r3, [r7, #4] - 8007df0: 6a5b ldr r3, [r3, #36] ; 0x24 - 8007df2: 431a orrs r2, r3 - 8007df4: 687b ldr r3, [r7, #4] - 8007df6: 6a9b ldr r3, [r3, #40] ; 0x28 - 8007df8: 021b lsls r3, r3, #8 - 8007dfa: 431a orrs r2, r3 - 8007dfc: 687b ldr r3, [r7, #4] - 8007dfe: 6adb ldr r3, [r3, #44] ; 0x2c - 8007e00: 431a orrs r2, r3 - 8007e02: 687b ldr r3, [r7, #4] - 8007e04: 6b1b ldr r3, [r3, #48] ; 0x30 - 8007e06: 431a orrs r2, r3 - 8007e08: 4b3e ldr r3, [pc, #248] ; (8007f04 ) - 8007e0a: 430a orrs r2, r1 - 8007e0c: 60da str r2, [r3, #12] - RCC_OscInitStruct->PLL.PLLP, - RCC_OscInitStruct->PLL.PLLR); -#endif /* RCC_PLLQ_SUPPORT */ - - /* Enable the main PLL. */ - __HAL_RCC_PLL_ENABLE(); - 8007e0e: 4b3d ldr r3, [pc, #244] ; (8007f04 ) - 8007e10: 681a ldr r2, [r3, #0] - 8007e12: 4b3c ldr r3, [pc, #240] ; (8007f04 ) - 8007e14: 2180 movs r1, #128 ; 0x80 - 8007e16: 0449 lsls r1, r1, #17 - 8007e18: 430a orrs r2, r1 - 8007e1a: 601a str r2, [r3, #0] - - /* Enable PLLR Clock output. */ - __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLRCLK); - 8007e1c: 4b39 ldr r3, [pc, #228] ; (8007f04 ) - 8007e1e: 68da ldr r2, [r3, #12] - 8007e20: 4b38 ldr r3, [pc, #224] ; (8007f04 ) - 8007e22: 2180 movs r1, #128 ; 0x80 - 8007e24: 0549 lsls r1, r1, #21 - 8007e26: 430a orrs r2, r1 - 8007e28: 60da str r2, [r3, #12] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007e2a: f7fe fa19 bl 8006260 - 8007e2e: 0003 movs r3, r0 - 8007e30: 613b str r3, [r7, #16] - - /* Wait till PLL is ready */ - while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8007e32: e008 b.n 8007e46 - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8007e34: f7fe fa14 bl 8006260 - 8007e38: 0002 movs r2, r0 - 8007e3a: 693b ldr r3, [r7, #16] - 8007e3c: 1ad3 subs r3, r2, r3 - 8007e3e: 2b02 cmp r3, #2 - 8007e40: d901 bls.n 8007e46 - { - return HAL_TIMEOUT; - 8007e42: 2303 movs r3, #3 - 8007e44: e059 b.n 8007efa - while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8007e46: 4b2f ldr r3, [pc, #188] ; (8007f04 ) - 8007e48: 681a ldr r2, [r3, #0] - 8007e4a: 2380 movs r3, #128 ; 0x80 - 8007e4c: 049b lsls r3, r3, #18 - 8007e4e: 4013 ands r3, r2 - 8007e50: d0f0 beq.n 8007e34 - 8007e52: e051 b.n 8007ef8 - } - } - else - { - /* Disable the main PLL. */ - __HAL_RCC_PLL_DISABLE(); - 8007e54: 4b2b ldr r3, [pc, #172] ; (8007f04 ) - 8007e56: 681a ldr r2, [r3, #0] - 8007e58: 4b2a ldr r3, [pc, #168] ; (8007f04 ) - 8007e5a: 492e ldr r1, [pc, #184] ; (8007f14 ) - 8007e5c: 400a ands r2, r1 - 8007e5e: 601a str r2, [r3, #0] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8007e60: f7fe f9fe bl 8006260 - 8007e64: 0003 movs r3, r0 - 8007e66: 613b str r3, [r7, #16] - - /* Wait till PLL is disabled */ - while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8007e68: e008 b.n 8007e7c - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8007e6a: f7fe f9f9 bl 8006260 - 8007e6e: 0002 movs r2, r0 - 8007e70: 693b ldr r3, [r7, #16] - 8007e72: 1ad3 subs r3, r2, r3 - 8007e74: 2b02 cmp r3, #2 - 8007e76: d901 bls.n 8007e7c - { - return HAL_TIMEOUT; - 8007e78: 2303 movs r3, #3 - 8007e7a: e03e b.n 8007efa - while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8007e7c: 4b21 ldr r3, [pc, #132] ; (8007f04 ) - 8007e7e: 681a ldr r2, [r3, #0] - 8007e80: 2380 movs r3, #128 ; 0x80 - 8007e82: 049b lsls r3, r3, #18 - 8007e84: 4013 ands r3, r2 - 8007e86: d1f0 bne.n 8007e6a - } - /* Unselect main PLL clock source and disable main PLL outputs to save power */ -#if defined(RCC_PLLQ_SUPPORT) - RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLQEN | RCC_PLLCFGR_PLLREN); -#else - RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLREN); - 8007e88: 4b1e ldr r3, [pc, #120] ; (8007f04 ) - 8007e8a: 68da ldr r2, [r3, #12] - 8007e8c: 4b1d ldr r3, [pc, #116] ; (8007f04 ) - 8007e8e: 4923 ldr r1, [pc, #140] ; (8007f1c ) - 8007e90: 400a ands r2, r1 - 8007e92: 60da str r2, [r3, #12] - 8007e94: e030 b.n 8007ef8 - } - } - else - { - /* Check if there is a request to disable the PLL used as System clock source */ - if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8007e96: 687b ldr r3, [r7, #4] - 8007e98: 69db ldr r3, [r3, #28] - 8007e9a: 2b01 cmp r3, #1 - 8007e9c: d101 bne.n 8007ea2 - { - return HAL_ERROR; - 8007e9e: 2301 movs r3, #1 - 8007ea0: e02b b.n 8007efa - } - else - { - /* Do not return HAL_ERROR if request repeats the current configuration */ - temp_pllckcfg = RCC->PLLCFGR; - 8007ea2: 4b18 ldr r3, [pc, #96] ; (8007f04 ) - 8007ea4: 68db ldr r3, [r3, #12] - 8007ea6: 617b str r3, [r7, #20] - if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8007ea8: 697b ldr r3, [r7, #20] - 8007eaa: 2203 movs r2, #3 - 8007eac: 401a ands r2, r3 - 8007eae: 687b ldr r3, [r7, #4] - 8007eb0: 6a1b ldr r3, [r3, #32] - 8007eb2: 429a cmp r2, r3 - 8007eb4: d11e bne.n 8007ef4 - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || - 8007eb6: 697b ldr r3, [r7, #20] - 8007eb8: 2270 movs r2, #112 ; 0x70 - 8007eba: 401a ands r2, r3 - 8007ebc: 687b ldr r3, [r7, #4] - 8007ebe: 6a5b ldr r3, [r3, #36] ; 0x24 - if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8007ec0: 429a cmp r2, r3 - 8007ec2: d117 bne.n 8007ef4 - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || - 8007ec4: 697a ldr r2, [r7, #20] - 8007ec6: 23fe movs r3, #254 ; 0xfe - 8007ec8: 01db lsls r3, r3, #7 - 8007eca: 401a ands r2, r3 - 8007ecc: 687b ldr r3, [r7, #4] - 8007ece: 6a9b ldr r3, [r3, #40] ; 0x28 - 8007ed0: 021b lsls r3, r3, #8 - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || - 8007ed2: 429a cmp r2, r3 - 8007ed4: d10e bne.n 8007ef4 - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || - 8007ed6: 697a ldr r2, [r7, #20] - 8007ed8: 23f8 movs r3, #248 ; 0xf8 - 8007eda: 039b lsls r3, r3, #14 - 8007edc: 401a ands r2, r3 - 8007ede: 687b ldr r3, [r7, #4] - 8007ee0: 6adb ldr r3, [r3, #44] ; 0x2c - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || - 8007ee2: 429a cmp r2, r3 - 8007ee4: d106 bne.n 8007ef4 -#if defined (RCC_PLLQ_SUPPORT) - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ) || -#endif /* RCC_PLLQ_SUPPORT */ - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLR) != RCC_OscInitStruct->PLL.PLLR)) - 8007ee6: 697b ldr r3, [r7, #20] - 8007ee8: 0f5b lsrs r3, r3, #29 - 8007eea: 075a lsls r2, r3, #29 - 8007eec: 687b ldr r3, [r7, #4] - 8007eee: 6b1b ldr r3, [r3, #48] ; 0x30 - (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || - 8007ef0: 429a cmp r2, r3 - 8007ef2: d001 beq.n 8007ef8 - { - return HAL_ERROR; - 8007ef4: 2301 movs r3, #1 - 8007ef6: e000 b.n 8007efa - } - } - } - } - return HAL_OK; - 8007ef8: 2300 movs r3, #0 -} - 8007efa: 0018 movs r0, r3 - 8007efc: 46bd mov sp, r7 - 8007efe: b008 add sp, #32 - 8007f00: bd80 pop {r7, pc} - 8007f02: 46c0 nop ; (mov r8, r8) - 8007f04: 40021000 .word 0x40021000 - 8007f08: 40007000 .word 0x40007000 - 8007f0c: 00001388 .word 0x00001388 - 8007f10: efffffff .word 0xefffffff - 8007f14: feffffff .word 0xfeffffff - 8007f18: 1fc1808c .word 0x1fc1808c - 8007f1c: effefffc .word 0xeffefffc - -08007f20 : - * 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(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) -{ - 8007f20: b580 push {r7, lr} - 8007f22: b084 sub sp, #16 - 8007f24: af00 add r7, sp, #0 - 8007f26: 6078 str r0, [r7, #4] - 8007f28: 6039 str r1, [r7, #0] - uint32_t tickstart; - - /* Check Null pointer */ - if (RCC_ClkInitStruct == NULL) - 8007f2a: 687b ldr r3, [r7, #4] - 8007f2c: 2b00 cmp r3, #0 - 8007f2e: d101 bne.n 8007f34 - { - return HAL_ERROR; - 8007f30: 2301 movs r3, #1 - 8007f32: e0e9 b.n 8008108 - /* To correctly read data from FLASH memory, the number of wait states (LATENCY) - must be correctly programmed according to the frequency of the FLASH 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()) - 8007f34: 4b76 ldr r3, [pc, #472] ; (8008110 ) - 8007f36: 681b ldr r3, [r3, #0] - 8007f38: 2207 movs r2, #7 - 8007f3a: 4013 ands r3, r2 - 8007f3c: 683a ldr r2, [r7, #0] - 8007f3e: 429a cmp r2, r3 - 8007f40: d91e bls.n 8007f80 - { - /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ - __HAL_FLASH_SET_LATENCY(FLatency); - 8007f42: 4b73 ldr r3, [pc, #460] ; (8008110 ) - 8007f44: 681b ldr r3, [r3, #0] - 8007f46: 2207 movs r2, #7 - 8007f48: 4393 bics r3, r2 - 8007f4a: 0019 movs r1, r3 - 8007f4c: 4b70 ldr r3, [pc, #448] ; (8008110 ) - 8007f4e: 683a ldr r2, [r7, #0] - 8007f50: 430a orrs r2, r1 - 8007f52: 601a str r2, [r3, #0] - - /* Check that the new number of wait states is taken into account to access the Flash - memory by polling the FLASH_ACR register */ - tickstart = HAL_GetTick(); - 8007f54: f7fe f984 bl 8006260 - 8007f58: 0003 movs r3, r0 - 8007f5a: 60fb str r3, [r7, #12] - - while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8007f5c: e009 b.n 8007f72 - { - if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8007f5e: f7fe f97f bl 8006260 - 8007f62: 0002 movs r2, r0 - 8007f64: 68fb ldr r3, [r7, #12] - 8007f66: 1ad3 subs r3, r2, r3 - 8007f68: 4a6a ldr r2, [pc, #424] ; (8008114 ) - 8007f6a: 4293 cmp r3, r2 - 8007f6c: d901 bls.n 8007f72 - { - return HAL_TIMEOUT; - 8007f6e: 2303 movs r3, #3 - 8007f70: e0ca b.n 8008108 - while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8007f72: 4b67 ldr r3, [pc, #412] ; (8008110 ) - 8007f74: 681b ldr r3, [r3, #0] - 8007f76: 2207 movs r2, #7 - 8007f78: 4013 ands r3, r2 - 8007f7a: 683a ldr r2, [r7, #0] - 8007f7c: 429a cmp r2, r3 - 8007f7e: d1ee bne.n 8007f5e - } - } - } - - /*-------------------------- HCLK Configuration --------------------------*/ - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8007f80: 687b ldr r3, [r7, #4] - 8007f82: 681b ldr r3, [r3, #0] - 8007f84: 2202 movs r2, #2 - 8007f86: 4013 ands r3, r2 - 8007f88: d015 beq.n 8007fb6 - { - /* Set the highest APB divider 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) - 8007f8a: 687b ldr r3, [r7, #4] - 8007f8c: 681b ldr r3, [r3, #0] - 8007f8e: 2204 movs r2, #4 - 8007f90: 4013 ands r3, r2 - 8007f92: d006 beq.n 8007fa2 - { - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_HCLK_DIV16); - 8007f94: 4b60 ldr r3, [pc, #384] ; (8008118 ) - 8007f96: 689a ldr r2, [r3, #8] - 8007f98: 4b5f ldr r3, [pc, #380] ; (8008118 ) - 8007f9a: 21e0 movs r1, #224 ; 0xe0 - 8007f9c: 01c9 lsls r1, r1, #7 - 8007f9e: 430a orrs r2, r1 - 8007fa0: 609a str r2, [r3, #8] - } - - /* Set the new HCLK clock divider */ - assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8007fa2: 4b5d ldr r3, [pc, #372] ; (8008118 ) - 8007fa4: 689b ldr r3, [r3, #8] - 8007fa6: 4a5d ldr r2, [pc, #372] ; (800811c ) - 8007fa8: 4013 ands r3, r2 - 8007faa: 0019 movs r1, r3 - 8007fac: 687b ldr r3, [r7, #4] - 8007fae: 689a ldr r2, [r3, #8] - 8007fb0: 4b59 ldr r3, [pc, #356] ; (8008118 ) - 8007fb2: 430a orrs r2, r1 - 8007fb4: 609a str r2, [r3, #8] - } - - /*------------------------- SYSCLK Configuration ---------------------------*/ - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8007fb6: 687b ldr r3, [r7, #4] - 8007fb8: 681b ldr r3, [r3, #0] - 8007fba: 2201 movs r2, #1 - 8007fbc: 4013 ands r3, r2 - 8007fbe: d057 beq.n 8008070 - { - assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); - - /* HSE is selected as System Clock Source */ - if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8007fc0: 687b ldr r3, [r7, #4] - 8007fc2: 685b ldr r3, [r3, #4] - 8007fc4: 2b01 cmp r3, #1 - 8007fc6: d107 bne.n 8007fd8 - { - /* Check the HSE ready flag */ - if (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 8007fc8: 4b53 ldr r3, [pc, #332] ; (8008118 ) - 8007fca: 681a ldr r2, [r3, #0] - 8007fcc: 2380 movs r3, #128 ; 0x80 - 8007fce: 029b lsls r3, r3, #10 - 8007fd0: 4013 ands r3, r2 - 8007fd2: d12b bne.n 800802c - { - return HAL_ERROR; - 8007fd4: 2301 movs r3, #1 - 8007fd6: e097 b.n 8008108 - } - } - /* PLL is selected as System Clock Source */ - else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 8007fd8: 687b ldr r3, [r7, #4] - 8007fda: 685b ldr r3, [r3, #4] - 8007fdc: 2b02 cmp r3, #2 - 8007fde: d107 bne.n 8007ff0 - { - /* Check the PLL ready flag */ - if (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8007fe0: 4b4d ldr r3, [pc, #308] ; (8008118 ) - 8007fe2: 681a ldr r2, [r3, #0] - 8007fe4: 2380 movs r3, #128 ; 0x80 - 8007fe6: 049b lsls r3, r3, #18 - 8007fe8: 4013 ands r3, r2 - 8007fea: d11f bne.n 800802c - { - return HAL_ERROR; - 8007fec: 2301 movs r3, #1 - 8007fee: e08b b.n 8008108 - } - } - /* HSI is selected as System Clock Source */ - else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) - 8007ff0: 687b ldr r3, [r7, #4] - 8007ff2: 685b ldr r3, [r3, #4] - 8007ff4: 2b00 cmp r3, #0 - 8007ff6: d107 bne.n 8008008 - { - /* Check the HSI ready flag */ - if (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8007ff8: 4b47 ldr r3, [pc, #284] ; (8008118 ) - 8007ffa: 681a ldr r2, [r3, #0] - 8007ffc: 2380 movs r3, #128 ; 0x80 - 8007ffe: 00db lsls r3, r3, #3 - 8008000: 4013 ands r3, r2 - 8008002: d113 bne.n 800802c - { - return HAL_ERROR; - 8008004: 2301 movs r3, #1 - 8008006: e07f b.n 8008108 - } - } - /* LSI is selected as System Clock Source */ - else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_LSI) - 8008008: 687b ldr r3, [r7, #4] - 800800a: 685b ldr r3, [r3, #4] - 800800c: 2b03 cmp r3, #3 - 800800e: d106 bne.n 800801e - { - /* Check the LSI ready flag */ - if (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 8008010: 4b41 ldr r3, [pc, #260] ; (8008118 ) - 8008012: 6e1b ldr r3, [r3, #96] ; 0x60 - 8008014: 2202 movs r2, #2 - 8008016: 4013 ands r3, r2 - 8008018: d108 bne.n 800802c - { - return HAL_ERROR; - 800801a: 2301 movs r3, #1 - 800801c: e074 b.n 8008108 - } - /* LSE is selected as System Clock Source */ - else - { - /* Check the LSE ready flag */ - if (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 800801e: 4b3e ldr r3, [pc, #248] ; (8008118 ) - 8008020: 6ddb ldr r3, [r3, #92] ; 0x5c - 8008022: 2202 movs r2, #2 - 8008024: 4013 ands r3, r2 - 8008026: d101 bne.n 800802c - { - return HAL_ERROR; - 8008028: 2301 movs r3, #1 - 800802a: e06d b.n 8008108 - } - } - MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource); - 800802c: 4b3a ldr r3, [pc, #232] ; (8008118 ) - 800802e: 689b ldr r3, [r3, #8] - 8008030: 2207 movs r2, #7 - 8008032: 4393 bics r3, r2 - 8008034: 0019 movs r1, r3 - 8008036: 687b ldr r3, [r7, #4] - 8008038: 685a ldr r2, [r3, #4] - 800803a: 4b37 ldr r3, [pc, #220] ; (8008118 ) - 800803c: 430a orrs r2, r1 - 800803e: 609a str r2, [r3, #8] - - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 8008040: f7fe f90e bl 8006260 - 8008044: 0003 movs r3, r0 - 8008046: 60fb str r3, [r7, #12] - - while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8008048: e009 b.n 800805e - { - if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 800804a: f7fe f909 bl 8006260 - 800804e: 0002 movs r2, r0 - 8008050: 68fb ldr r3, [r7, #12] - 8008052: 1ad3 subs r3, r2, r3 - 8008054: 4a2f ldr r2, [pc, #188] ; (8008114 ) - 8008056: 4293 cmp r3, r2 - 8008058: d901 bls.n 800805e - { - return HAL_TIMEOUT; - 800805a: 2303 movs r3, #3 - 800805c: e054 b.n 8008108 - while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 800805e: 4b2e ldr r3, [pc, #184] ; (8008118 ) - 8008060: 689b ldr r3, [r3, #8] - 8008062: 2238 movs r2, #56 ; 0x38 - 8008064: 401a ands r2, r3 - 8008066: 687b ldr r3, [r7, #4] - 8008068: 685b ldr r3, [r3, #4] - 800806a: 00db lsls r3, r3, #3 - 800806c: 429a cmp r2, r3 - 800806e: d1ec bne.n 800804a - } - } - } - - /* Decreasing the number of wait states because of lower CPU frequency */ - if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8008070: 4b27 ldr r3, [pc, #156] ; (8008110 ) - 8008072: 681b ldr r3, [r3, #0] - 8008074: 2207 movs r2, #7 - 8008076: 4013 ands r3, r2 - 8008078: 683a ldr r2, [r7, #0] - 800807a: 429a cmp r2, r3 - 800807c: d21e bcs.n 80080bc - { - /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ - __HAL_FLASH_SET_LATENCY(FLatency); - 800807e: 4b24 ldr r3, [pc, #144] ; (8008110 ) - 8008080: 681b ldr r3, [r3, #0] - 8008082: 2207 movs r2, #7 - 8008084: 4393 bics r3, r2 - 8008086: 0019 movs r1, r3 - 8008088: 4b21 ldr r3, [pc, #132] ; (8008110 ) - 800808a: 683a ldr r2, [r7, #0] - 800808c: 430a orrs r2, r1 - 800808e: 601a str r2, [r3, #0] - - /* Check that the new number of wait states is taken into account to access the Flash - memory by polling the FLASH_ACR register */ - tickstart = HAL_GetTick(); - 8008090: f7fe f8e6 bl 8006260 - 8008094: 0003 movs r3, r0 - 8008096: 60fb str r3, [r7, #12] - - while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8008098: e009 b.n 80080ae - { - if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 800809a: f7fe f8e1 bl 8006260 - 800809e: 0002 movs r2, r0 - 80080a0: 68fb ldr r3, [r7, #12] - 80080a2: 1ad3 subs r3, r2, r3 - 80080a4: 4a1b ldr r2, [pc, #108] ; (8008114 ) - 80080a6: 4293 cmp r3, r2 - 80080a8: d901 bls.n 80080ae - { - return HAL_TIMEOUT; - 80080aa: 2303 movs r3, #3 - 80080ac: e02c b.n 8008108 - while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 80080ae: 4b18 ldr r3, [pc, #96] ; (8008110 ) - 80080b0: 681b ldr r3, [r3, #0] - 80080b2: 2207 movs r2, #7 - 80080b4: 4013 ands r3, r2 - 80080b6: 683a ldr r2, [r7, #0] - 80080b8: 429a cmp r2, r3 - 80080ba: d1ee bne.n 800809a - } - } - } - - /*-------------------------- PCLK1 Configuration ---------------------------*/ - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 80080bc: 687b ldr r3, [r7, #4] - 80080be: 681b ldr r3, [r3, #0] - 80080c0: 2204 movs r2, #4 - 80080c2: 4013 ands r3, r2 - 80080c4: d009 beq.n 80080da - { - assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_ClkInitStruct->APB1CLKDivider); - 80080c6: 4b14 ldr r3, [pc, #80] ; (8008118 ) - 80080c8: 689b ldr r3, [r3, #8] - 80080ca: 4a15 ldr r2, [pc, #84] ; (8008120 ) - 80080cc: 4013 ands r3, r2 - 80080ce: 0019 movs r1, r3 - 80080d0: 687b ldr r3, [r7, #4] - 80080d2: 68da ldr r2, [r3, #12] - 80080d4: 4b10 ldr r3, [pc, #64] ; (8008118 ) - 80080d6: 430a orrs r2, r1 - 80080d8: 609a str r2, [r3, #8] - } - - /* Update the SystemCoreClock global variable */ - SystemCoreClock = (HAL_RCC_GetSysClockFreq() >> ((AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) & 0x1FU)); - 80080da: f000 f829 bl 8008130 - 80080de: 0001 movs r1, r0 - 80080e0: 4b0d ldr r3, [pc, #52] ; (8008118 ) - 80080e2: 689b ldr r3, [r3, #8] - 80080e4: 0a1b lsrs r3, r3, #8 - 80080e6: 220f movs r2, #15 - 80080e8: 401a ands r2, r3 - 80080ea: 4b0e ldr r3, [pc, #56] ; (8008124 ) - 80080ec: 0092 lsls r2, r2, #2 - 80080ee: 58d3 ldr r3, [r2, r3] - 80080f0: 221f movs r2, #31 - 80080f2: 4013 ands r3, r2 - 80080f4: 000a movs r2, r1 - 80080f6: 40da lsrs r2, r3 - 80080f8: 4b0b ldr r3, [pc, #44] ; (8008128 ) - 80080fa: 601a str r2, [r3, #0] - - /* Configure the source of time base considering new system clocks settings*/ - return HAL_InitTick(uwTickPrio); - 80080fc: 4b0b ldr r3, [pc, #44] ; (800812c ) - 80080fe: 681b ldr r3, [r3, #0] - 8008100: 0018 movs r0, r3 - 8008102: f7fd fb35 bl 8005770 - 8008106: 0003 movs r3, r0 -} - 8008108: 0018 movs r0, r3 - 800810a: 46bd mov sp, r7 - 800810c: b004 add sp, #16 - 800810e: bd80 pop {r7, pc} - 8008110: 40022000 .word 0x40022000 - 8008114: 00001388 .word 0x00001388 - 8008118: 40021000 .word 0x40021000 - 800811c: fffff0ff .word 0xfffff0ff - 8008120: ffff8fff .word 0xffff8fff - 8008124: 08010e80 .word 0x08010e80 - 8008128: 20000040 .word 0x20000040 - 800812c: 20000044 .word 0x20000044 - -08008130 : - * - * - * @retval SYSCLK frequency - */ -uint32_t HAL_RCC_GetSysClockFreq(void) -{ - 8008130: b580 push {r7, lr} - 8008132: b086 sub sp, #24 - 8008134: af00 add r7, sp, #0 - uint32_t pllvco, pllsource, pllr, pllm, hsidiv; - uint32_t sysclockfreq; - - if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) - 8008136: 4b3c ldr r3, [pc, #240] ; (8008228 ) - 8008138: 689b ldr r3, [r3, #8] - 800813a: 2238 movs r2, #56 ; 0x38 - 800813c: 4013 ands r3, r2 - 800813e: d10f bne.n 8008160 - { - /* HSISYS can be derived for HSI16 */ - hsidiv = (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos)); - 8008140: 4b39 ldr r3, [pc, #228] ; (8008228 ) - 8008142: 681b ldr r3, [r3, #0] - 8008144: 0adb lsrs r3, r3, #11 - 8008146: 2207 movs r2, #7 - 8008148: 4013 ands r3, r2 - 800814a: 2201 movs r2, #1 - 800814c: 409a lsls r2, r3 - 800814e: 0013 movs r3, r2 - 8008150: 603b str r3, [r7, #0] - - /* HSI used as system clock source */ - sysclockfreq = (HSI_VALUE / hsidiv); - 8008152: 6839 ldr r1, [r7, #0] - 8008154: 4835 ldr r0, [pc, #212] ; (800822c ) - 8008156: f7f7 ffe9 bl 800012c <__udivsi3> - 800815a: 0003 movs r3, r0 - 800815c: 613b str r3, [r7, #16] - 800815e: e05d b.n 800821c - } - else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) - 8008160: 4b31 ldr r3, [pc, #196] ; (8008228 ) - 8008162: 689b ldr r3, [r3, #8] - 8008164: 2238 movs r2, #56 ; 0x38 - 8008166: 4013 ands r3, r2 - 8008168: 2b08 cmp r3, #8 - 800816a: d102 bne.n 8008172 - { - /* HSE used as system clock source */ - sysclockfreq = HSE_VALUE; - 800816c: 4b2f ldr r3, [pc, #188] ; (800822c ) - 800816e: 613b str r3, [r7, #16] - 8008170: e054 b.n 800821c - } - else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8008172: 4b2d ldr r3, [pc, #180] ; (8008228 ) - 8008174: 689b ldr r3, [r3, #8] - 8008176: 2238 movs r2, #56 ; 0x38 - 8008178: 4013 ands r3, r2 - 800817a: 2b10 cmp r3, #16 - 800817c: d138 bne.n 80081f0 - /* PLL used as system clock source */ - - /* PLL_VCO = ((HSE_VALUE or HSI_VALUE)/ PLLM) * PLLN - SYSCLK = PLL_VCO / PLLR - */ - pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); - 800817e: 4b2a ldr r3, [pc, #168] ; (8008228 ) - 8008180: 68db ldr r3, [r3, #12] - 8008182: 2203 movs r2, #3 - 8008184: 4013 ands r3, r2 - 8008186: 60fb str r3, [r7, #12] - pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ; - 8008188: 4b27 ldr r3, [pc, #156] ; (8008228 ) - 800818a: 68db ldr r3, [r3, #12] - 800818c: 091b lsrs r3, r3, #4 - 800818e: 2207 movs r2, #7 - 8008190: 4013 ands r3, r2 - 8008192: 3301 adds r3, #1 - 8008194: 60bb str r3, [r7, #8] - - switch (pllsource) - 8008196: 68fb ldr r3, [r7, #12] - 8008198: 2b03 cmp r3, #3 - 800819a: d10d bne.n 80081b8 - { - case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ - pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); - 800819c: 68b9 ldr r1, [r7, #8] - 800819e: 4823 ldr r0, [pc, #140] ; (800822c ) - 80081a0: f7f7 ffc4 bl 800012c <__udivsi3> - 80081a4: 0003 movs r3, r0 - 80081a6: 0019 movs r1, r3 - 80081a8: 4b1f ldr r3, [pc, #124] ; (8008228 ) - 80081aa: 68db ldr r3, [r3, #12] - 80081ac: 0a1b lsrs r3, r3, #8 - 80081ae: 227f movs r2, #127 ; 0x7f - 80081b0: 4013 ands r3, r2 - 80081b2: 434b muls r3, r1 - 80081b4: 617b str r3, [r7, #20] - break; - 80081b6: e00d b.n 80081d4 - - case RCC_PLLSOURCE_HSI: /* HSI16 used as PLL clock source */ - default: /* HSI16 used as PLL clock source */ - pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos) ; - 80081b8: 68b9 ldr r1, [r7, #8] - 80081ba: 481c ldr r0, [pc, #112] ; (800822c ) - 80081bc: f7f7 ffb6 bl 800012c <__udivsi3> - 80081c0: 0003 movs r3, r0 - 80081c2: 0019 movs r1, r3 - 80081c4: 4b18 ldr r3, [pc, #96] ; (8008228 ) - 80081c6: 68db ldr r3, [r3, #12] - 80081c8: 0a1b lsrs r3, r3, #8 - 80081ca: 227f movs r2, #127 ; 0x7f - 80081cc: 4013 ands r3, r2 - 80081ce: 434b muls r3, r1 - 80081d0: 617b str r3, [r7, #20] - break; - 80081d2: 46c0 nop ; (mov r8, r8) - } - pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U); - 80081d4: 4b14 ldr r3, [pc, #80] ; (8008228 ) - 80081d6: 68db ldr r3, [r3, #12] - 80081d8: 0f5b lsrs r3, r3, #29 - 80081da: 2207 movs r2, #7 - 80081dc: 4013 ands r3, r2 - 80081de: 3301 adds r3, #1 - 80081e0: 607b str r3, [r7, #4] - sysclockfreq = pllvco / pllr; - 80081e2: 6879 ldr r1, [r7, #4] - 80081e4: 6978 ldr r0, [r7, #20] - 80081e6: f7f7 ffa1 bl 800012c <__udivsi3> - 80081ea: 0003 movs r3, r0 - 80081ec: 613b str r3, [r7, #16] - 80081ee: e015 b.n 800821c - } - else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) - 80081f0: 4b0d ldr r3, [pc, #52] ; (8008228 ) - 80081f2: 689b ldr r3, [r3, #8] - 80081f4: 2238 movs r2, #56 ; 0x38 - 80081f6: 4013 ands r3, r2 - 80081f8: 2b20 cmp r3, #32 - 80081fa: d103 bne.n 8008204 - { - /* LSE used as system clock source */ - sysclockfreq = LSE_VALUE; - 80081fc: 2380 movs r3, #128 ; 0x80 - 80081fe: 021b lsls r3, r3, #8 - 8008200: 613b str r3, [r7, #16] - 8008202: e00b b.n 800821c - } - else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) - 8008204: 4b08 ldr r3, [pc, #32] ; (8008228 ) - 8008206: 689b ldr r3, [r3, #8] - 8008208: 2238 movs r2, #56 ; 0x38 - 800820a: 4013 ands r3, r2 - 800820c: 2b18 cmp r3, #24 - 800820e: d103 bne.n 8008218 - { - /* LSI used as system clock source */ - sysclockfreq = LSI_VALUE; - 8008210: 23fa movs r3, #250 ; 0xfa - 8008212: 01db lsls r3, r3, #7 - 8008214: 613b str r3, [r7, #16] - 8008216: e001 b.n 800821c - } - else - { - sysclockfreq = 0U; - 8008218: 2300 movs r3, #0 - 800821a: 613b str r3, [r7, #16] - } - - return sysclockfreq; - 800821c: 693b ldr r3, [r7, #16] -} - 800821e: 0018 movs r0, r3 - 8008220: 46bd mov sp, r7 - 8008222: b006 add sp, #24 - 8008224: bd80 pop {r7, pc} - 8008226: 46c0 nop ; (mov r8, r8) - 8008228: 40021000 .word 0x40021000 - 800822c: 00f42400 .word 0x00f42400 - -08008230 : - * - * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency. - * @retval HCLK frequency in Hz - */ -uint32_t HAL_RCC_GetHCLKFreq(void) -{ - 8008230: b580 push {r7, lr} - 8008232: af00 add r7, sp, #0 - return SystemCoreClock; - 8008234: 4b02 ldr r3, [pc, #8] ; (8008240 ) - 8008236: 681b ldr r3, [r3, #0] -} - 8008238: 0018 movs r0, r3 - 800823a: 46bd mov sp, r7 - 800823c: bd80 pop {r7, pc} - 800823e: 46c0 nop ; (mov r8, r8) - 8008240: 20000040 .word 0x20000040 - -08008244 : - * @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 in Hz - */ -uint32_t HAL_RCC_GetPCLK1Freq(void) -{ - 8008244: b5b0 push {r4, r5, r7, lr} - 8008246: af00 add r7, sp, #0 - /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ - return ((uint32_t)(__LL_RCC_CALC_PCLK1_FREQ(HAL_RCC_GetHCLKFreq(), LL_RCC_GetAPB1Prescaler()))); - 8008248: f7ff fff2 bl 8008230 - 800824c: 0004 movs r4, r0 - 800824e: f7ff fb4b bl 80078e8 - 8008252: 0003 movs r3, r0 - 8008254: 0b1a lsrs r2, r3, #12 - 8008256: 4b05 ldr r3, [pc, #20] ; (800826c ) - 8008258: 0092 lsls r2, r2, #2 - 800825a: 58d3 ldr r3, [r2, r3] - 800825c: 221f movs r2, #31 - 800825e: 4013 ands r3, r2 - 8008260: 40dc lsrs r4, r3 - 8008262: 0023 movs r3, r4 -} - 8008264: 0018 movs r0, r3 - 8008266: 46bd mov sp, r7 - 8008268: bdb0 pop {r4, r5, r7, pc} - 800826a: 46c0 nop ; (mov r8, r8) - 800826c: 08010ec0 .word 0x08010ec0 - -08008270 : - * will be configured. - * @param pFLatency Pointer on the Flash Latency. - * @retval None - */ -void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency) -{ - 8008270: b580 push {r7, lr} - 8008272: b082 sub sp, #8 - 8008274: af00 add r7, sp, #0 - 8008276: 6078 str r0, [r7, #4] - 8008278: 6039 str r1, [r7, #0] - /* Check the parameters */ - assert_param(RCC_ClkInitStruct != (void *)NULL); - assert_param(pFLatency != (void *)NULL); - - /* Set all possible values for the Clock type parameter --------------------*/ - RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1; - 800827a: 687b ldr r3, [r7, #4] - 800827c: 2207 movs r2, #7 - 800827e: 601a str r2, [r3, #0] - - /* Get the SYSCLK configuration --------------------------------------------*/ - RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW); - 8008280: 4b0e ldr r3, [pc, #56] ; (80082bc ) - 8008282: 689b ldr r3, [r3, #8] - 8008284: 2207 movs r2, #7 - 8008286: 401a ands r2, r3 - 8008288: 687b ldr r3, [r7, #4] - 800828a: 605a str r2, [r3, #4] - - /* Get the HCLK configuration ----------------------------------------------*/ - RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); - 800828c: 4b0b ldr r3, [pc, #44] ; (80082bc ) - 800828e: 689a ldr r2, [r3, #8] - 8008290: 23f0 movs r3, #240 ; 0xf0 - 8008292: 011b lsls r3, r3, #4 - 8008294: 401a ands r2, r3 - 8008296: 687b ldr r3, [r7, #4] - 8008298: 609a str r2, [r3, #8] - - /* Get the APB1 configuration ----------------------------------------------*/ - RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE); - 800829a: 4b08 ldr r3, [pc, #32] ; (80082bc ) - 800829c: 689a ldr r2, [r3, #8] - 800829e: 23e0 movs r3, #224 ; 0xe0 - 80082a0: 01db lsls r3, r3, #7 - 80082a2: 401a ands r2, r3 - 80082a4: 687b ldr r3, [r7, #4] - 80082a6: 60da str r2, [r3, #12] - - - /* Get the Flash Wait State (Latency) configuration ------------------------*/ - *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY); - 80082a8: 4b05 ldr r3, [pc, #20] ; (80082c0 ) - 80082aa: 681b ldr r3, [r3, #0] - 80082ac: 2207 movs r2, #7 - 80082ae: 401a ands r2, r3 - 80082b0: 683b ldr r3, [r7, #0] - 80082b2: 601a str r2, [r3, #0] -} - 80082b4: 46c0 nop ; (mov r8, r8) - 80082b6: 46bd mov sp, r7 - 80082b8: b002 add sp, #8 - 80082ba: bd80 pop {r7, pc} - 80082bc: 40021000 .word 0x40021000 - 80082c0: 40022000 .word 0x40022000 - -080082c4 : - * the RTC clock source: in this case the access to Backup domain is enabled. - * - * @retval HAL status - */ -HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) -{ - 80082c4: b580 push {r7, lr} - 80082c6: b086 sub sp, #24 - 80082c8: af00 add r7, sp, #0 - 80082ca: 6078 str r0, [r7, #4] - uint32_t tmpregister; - uint32_t tickstart; - HAL_StatusTypeDef ret = HAL_OK; /* Intermediate status */ - 80082cc: 2313 movs r3, #19 - 80082ce: 18fb adds r3, r7, r3 - 80082d0: 2200 movs r2, #0 - 80082d2: 701a strb r2, [r3, #0] - HAL_StatusTypeDef status = HAL_OK; /* Final status */ - 80082d4: 2312 movs r3, #18 - 80082d6: 18fb adds r3, r7, r3 - 80082d8: 2200 movs r2, #0 - 80082da: 701a strb r2, [r3, #0] - - /* Check the parameters */ - assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); - - /*-------------------------- RTC clock source configuration ----------------------*/ - if ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) - 80082dc: 687b ldr r3, [r7, #4] - 80082de: 681a ldr r2, [r3, #0] - 80082e0: 2380 movs r3, #128 ; 0x80 - 80082e2: 029b lsls r3, r3, #10 - 80082e4: 4013 ands r3, r2 - 80082e6: d100 bne.n 80082ea - 80082e8: e0a3 b.n 8008432 - { - FlagStatus pwrclkchanged = RESET; - 80082ea: 2011 movs r0, #17 - 80082ec: 183b adds r3, r7, r0 - 80082ee: 2200 movs r2, #0 - 80082f0: 701a strb r2, [r3, #0] - - /* Check for RTC Parameters used to output RTCCLK */ - assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); - - /* Enable Power Clock */ - if (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 80082f2: 4b86 ldr r3, [pc, #536] ; (800850c ) - 80082f4: 6bda ldr r2, [r3, #60] ; 0x3c - 80082f6: 2380 movs r3, #128 ; 0x80 - 80082f8: 055b lsls r3, r3, #21 - 80082fa: 4013 ands r3, r2 - 80082fc: d110 bne.n 8008320 - { - __HAL_RCC_PWR_CLK_ENABLE(); - 80082fe: 4b83 ldr r3, [pc, #524] ; (800850c ) - 8008300: 6bda ldr r2, [r3, #60] ; 0x3c - 8008302: 4b82 ldr r3, [pc, #520] ; (800850c ) - 8008304: 2180 movs r1, #128 ; 0x80 - 8008306: 0549 lsls r1, r1, #21 - 8008308: 430a orrs r2, r1 - 800830a: 63da str r2, [r3, #60] ; 0x3c - 800830c: 4b7f ldr r3, [pc, #508] ; (800850c ) - 800830e: 6bda ldr r2, [r3, #60] ; 0x3c - 8008310: 2380 movs r3, #128 ; 0x80 - 8008312: 055b lsls r3, r3, #21 - 8008314: 4013 ands r3, r2 - 8008316: 60bb str r3, [r7, #8] - 8008318: 68bb ldr r3, [r7, #8] - pwrclkchanged = SET; - 800831a: 183b adds r3, r7, r0 - 800831c: 2201 movs r2, #1 - 800831e: 701a strb r2, [r3, #0] - } - - /* Enable write access to Backup domain */ - SET_BIT(PWR->CR1, PWR_CR1_DBP); - 8008320: 4b7b ldr r3, [pc, #492] ; (8008510 ) - 8008322: 681a ldr r2, [r3, #0] - 8008324: 4b7a ldr r3, [pc, #488] ; (8008510 ) - 8008326: 2180 movs r1, #128 ; 0x80 - 8008328: 0049 lsls r1, r1, #1 - 800832a: 430a orrs r2, r1 - 800832c: 601a str r2, [r3, #0] - - /* Wait for Backup domain Write protection disable */ - tickstart = HAL_GetTick(); - 800832e: f7fd ff97 bl 8006260 - 8008332: 0003 movs r3, r0 - 8008334: 60fb str r3, [r7, #12] - - while ((PWR->CR1 & PWR_CR1_DBP) == 0U) - 8008336: e00b b.n 8008350 - { - if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8008338: f7fd ff92 bl 8006260 - 800833c: 0002 movs r2, r0 - 800833e: 68fb ldr r3, [r7, #12] - 8008340: 1ad3 subs r3, r2, r3 - 8008342: 2b02 cmp r3, #2 - 8008344: d904 bls.n 8008350 - { - ret = HAL_TIMEOUT; - 8008346: 2313 movs r3, #19 - 8008348: 18fb adds r3, r7, r3 - 800834a: 2203 movs r2, #3 - 800834c: 701a strb r2, [r3, #0] - break; - 800834e: e005 b.n 800835c - while ((PWR->CR1 & PWR_CR1_DBP) == 0U) - 8008350: 4b6f ldr r3, [pc, #444] ; (8008510 ) - 8008352: 681a ldr r2, [r3, #0] - 8008354: 2380 movs r3, #128 ; 0x80 - 8008356: 005b lsls r3, r3, #1 - 8008358: 4013 ands r3, r2 - 800835a: d0ed beq.n 8008338 - } - } - - if (ret == HAL_OK) - 800835c: 2313 movs r3, #19 - 800835e: 18fb adds r3, r7, r3 - 8008360: 781b ldrb r3, [r3, #0] - 8008362: 2b00 cmp r3, #0 - 8008364: d154 bne.n 8008410 - { - /* Reset the Backup domain only if the RTC Clock source selection is modified from default */ - tmpregister = READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL); - 8008366: 4b69 ldr r3, [pc, #420] ; (800850c ) - 8008368: 6dda ldr r2, [r3, #92] ; 0x5c - 800836a: 23c0 movs r3, #192 ; 0xc0 - 800836c: 009b lsls r3, r3, #2 - 800836e: 4013 ands r3, r2 - 8008370: 617b str r3, [r7, #20] - - /* Reset the Backup domain only if the RTC Clock source selection is modified */ - if ((tmpregister != RCC_RTCCLKSOURCE_NONE) && (tmpregister != PeriphClkInit->RTCClockSelection)) - 8008372: 697b ldr r3, [r7, #20] - 8008374: 2b00 cmp r3, #0 - 8008376: d019 beq.n 80083ac - 8008378: 687b ldr r3, [r7, #4] - 800837a: 699b ldr r3, [r3, #24] - 800837c: 697a ldr r2, [r7, #20] - 800837e: 429a cmp r2, r3 - 8008380: d014 beq.n 80083ac - { - /* Store the content of BDCR register before the reset of Backup Domain */ - tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL)); - 8008382: 4b62 ldr r3, [pc, #392] ; (800850c ) - 8008384: 6ddb ldr r3, [r3, #92] ; 0x5c - 8008386: 4a63 ldr r2, [pc, #396] ; (8008514 ) - 8008388: 4013 ands r3, r2 - 800838a: 617b str r3, [r7, #20] - /* RTC Clock selection can be changed only if the Backup Domain is reset */ - __HAL_RCC_BACKUPRESET_FORCE(); - 800838c: 4b5f ldr r3, [pc, #380] ; (800850c ) - 800838e: 6dda ldr r2, [r3, #92] ; 0x5c - 8008390: 4b5e ldr r3, [pc, #376] ; (800850c ) - 8008392: 2180 movs r1, #128 ; 0x80 - 8008394: 0249 lsls r1, r1, #9 - 8008396: 430a orrs r2, r1 - 8008398: 65da str r2, [r3, #92] ; 0x5c - __HAL_RCC_BACKUPRESET_RELEASE(); - 800839a: 4b5c ldr r3, [pc, #368] ; (800850c ) - 800839c: 6dda ldr r2, [r3, #92] ; 0x5c - 800839e: 4b5b ldr r3, [pc, #364] ; (800850c ) - 80083a0: 495d ldr r1, [pc, #372] ; (8008518 ) - 80083a2: 400a ands r2, r1 - 80083a4: 65da str r2, [r3, #92] ; 0x5c - /* Restore the Content of BDCR register */ - RCC->BDCR = tmpregister; - 80083a6: 4b59 ldr r3, [pc, #356] ; (800850c ) - 80083a8: 697a ldr r2, [r7, #20] - 80083aa: 65da str r2, [r3, #92] ; 0x5c - } - - /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ - if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSEON)) - 80083ac: 697b ldr r3, [r7, #20] - 80083ae: 2201 movs r2, #1 - 80083b0: 4013 ands r3, r2 - 80083b2: d016 beq.n 80083e2 - { - /* Get Start Tick*/ - tickstart = HAL_GetTick(); - 80083b4: f7fd ff54 bl 8006260 - 80083b8: 0003 movs r3, r0 - 80083ba: 60fb str r3, [r7, #12] - - /* Wait till LSE is ready */ - while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 80083bc: e00c b.n 80083d8 - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 80083be: f7fd ff4f bl 8006260 - 80083c2: 0002 movs r2, r0 - 80083c4: 68fb ldr r3, [r7, #12] - 80083c6: 1ad3 subs r3, r2, r3 - 80083c8: 4a54 ldr r2, [pc, #336] ; (800851c ) - 80083ca: 4293 cmp r3, r2 - 80083cc: d904 bls.n 80083d8 - { - ret = HAL_TIMEOUT; - 80083ce: 2313 movs r3, #19 - 80083d0: 18fb adds r3, r7, r3 - 80083d2: 2203 movs r2, #3 - 80083d4: 701a strb r2, [r3, #0] - break; - 80083d6: e004 b.n 80083e2 - while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 80083d8: 4b4c ldr r3, [pc, #304] ; (800850c ) - 80083da: 6ddb ldr r3, [r3, #92] ; 0x5c - 80083dc: 2202 movs r2, #2 - 80083de: 4013 ands r3, r2 - 80083e0: d0ed beq.n 80083be - } - } - } - - if (ret == HAL_OK) - 80083e2: 2313 movs r3, #19 - 80083e4: 18fb adds r3, r7, r3 - 80083e6: 781b ldrb r3, [r3, #0] - 80083e8: 2b00 cmp r3, #0 - 80083ea: d10a bne.n 8008402 - { - /* Apply new RTC clock source selection */ - __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 80083ec: 4b47 ldr r3, [pc, #284] ; (800850c ) - 80083ee: 6ddb ldr r3, [r3, #92] ; 0x5c - 80083f0: 4a48 ldr r2, [pc, #288] ; (8008514 ) - 80083f2: 4013 ands r3, r2 - 80083f4: 0019 movs r1, r3 - 80083f6: 687b ldr r3, [r7, #4] - 80083f8: 699a ldr r2, [r3, #24] - 80083fa: 4b44 ldr r3, [pc, #272] ; (800850c ) - 80083fc: 430a orrs r2, r1 - 80083fe: 65da str r2, [r3, #92] ; 0x5c - 8008400: e00c b.n 800841c - } - else - { - /* set overall return value */ - status = ret; - 8008402: 2312 movs r3, #18 - 8008404: 18fb adds r3, r7, r3 - 8008406: 2213 movs r2, #19 - 8008408: 18ba adds r2, r7, r2 - 800840a: 7812 ldrb r2, [r2, #0] - 800840c: 701a strb r2, [r3, #0] - 800840e: e005 b.n 800841c - } - } - else - { - /* set overall return value */ - status = ret; - 8008410: 2312 movs r3, #18 - 8008412: 18fb adds r3, r7, r3 - 8008414: 2213 movs r2, #19 - 8008416: 18ba adds r2, r7, r2 - 8008418: 7812 ldrb r2, [r2, #0] - 800841a: 701a strb r2, [r3, #0] - } - - /* Restore clock configuration if changed */ - if (pwrclkchanged == SET) - 800841c: 2311 movs r3, #17 - 800841e: 18fb adds r3, r7, r3 - 8008420: 781b ldrb r3, [r3, #0] - 8008422: 2b01 cmp r3, #1 - 8008424: d105 bne.n 8008432 - { - __HAL_RCC_PWR_CLK_DISABLE(); - 8008426: 4b39 ldr r3, [pc, #228] ; (800850c ) - 8008428: 6bda ldr r2, [r3, #60] ; 0x3c - 800842a: 4b38 ldr r3, [pc, #224] ; (800850c ) - 800842c: 493c ldr r1, [pc, #240] ; (8008520 ) - 800842e: 400a ands r2, r1 - 8008430: 63da str r2, [r3, #60] ; 0x3c - } - } - - /*-------------------------- USART1 clock source configuration -------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) - 8008432: 687b ldr r3, [r7, #4] - 8008434: 681b ldr r3, [r3, #0] - 8008436: 2201 movs r2, #1 - 8008438: 4013 ands r3, r2 - 800843a: d009 beq.n 8008450 - { - /* Check the parameters */ - assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); - - /* Configure the USART1 clock source */ - __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); - 800843c: 4b33 ldr r3, [pc, #204] ; (800850c ) - 800843e: 6d5b ldr r3, [r3, #84] ; 0x54 - 8008440: 2203 movs r2, #3 - 8008442: 4393 bics r3, r2 - 8008444: 0019 movs r1, r3 - 8008446: 687b ldr r3, [r7, #4] - 8008448: 685a ldr r2, [r3, #4] - 800844a: 4b30 ldr r3, [pc, #192] ; (800850c ) - 800844c: 430a orrs r2, r1 - 800844e: 655a str r2, [r3, #84] ; 0x54 - } - -#if defined(RCC_CCIPR_USART2SEL) - /*-------------------------- USART2 clock source configuration -------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) - 8008450: 687b ldr r3, [r7, #4] - 8008452: 681b ldr r3, [r3, #0] - 8008454: 2202 movs r2, #2 - 8008456: 4013 ands r3, r2 - 8008458: d009 beq.n 800846e - { - /* Check the parameters */ - assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); - - /* Configure the USART2 clock source */ - __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); - 800845a: 4b2c ldr r3, [pc, #176] ; (800850c ) - 800845c: 6d5b ldr r3, [r3, #84] ; 0x54 - 800845e: 220c movs r2, #12 - 8008460: 4393 bics r3, r2 - 8008462: 0019 movs r1, r3 - 8008464: 687b ldr r3, [r7, #4] - 8008466: 689a ldr r2, [r3, #8] - 8008468: 4b28 ldr r3, [pc, #160] ; (800850c ) - 800846a: 430a orrs r2, r1 - 800846c: 655a str r2, [r3, #84] ; 0x54 - __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection); - } -#endif /* RCC_CCIPR_LPTIM2SEL */ - - /*-------------------------- I2C1 clock source configuration ---------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) - 800846e: 687b ldr r3, [r7, #4] - 8008470: 681b ldr r3, [r3, #0] - 8008472: 2220 movs r2, #32 - 8008474: 4013 ands r3, r2 - 8008476: d009 beq.n 800848c - { - /* Check the parameters */ - assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); - - /* Configure the I2C1 clock source */ - __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); - 8008478: 4b24 ldr r3, [pc, #144] ; (800850c ) - 800847a: 6d5b ldr r3, [r3, #84] ; 0x54 - 800847c: 4a29 ldr r2, [pc, #164] ; (8008524 ) - 800847e: 4013 ands r3, r2 - 8008480: 0019 movs r1, r3 - 8008482: 687b ldr r3, [r7, #4] - 8008484: 68da ldr r2, [r3, #12] - 8008486: 4b21 ldr r3, [pc, #132] ; (800850c ) - 8008488: 430a orrs r2, r1 - 800848a: 655a str r2, [r3, #84] ; 0x54 - __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); - } - } -#endif /* RNG */ - /*-------------------------- ADC clock source configuration ----------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 800848c: 687b ldr r3, [r7, #4] - 800848e: 681a ldr r2, [r3, #0] - 8008490: 2380 movs r3, #128 ; 0x80 - 8008492: 01db lsls r3, r3, #7 - 8008494: 4013 ands r3, r2 - 8008496: d015 beq.n 80084c4 - { - /* Check the parameters */ - assert_param(IS_RCC_ADCCLKSOURCE(PeriphClkInit->AdcClockSelection)); - - /* Configure the ADC interface clock source */ - __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 8008498: 4b1c ldr r3, [pc, #112] ; (800850c ) - 800849a: 6d5b ldr r3, [r3, #84] ; 0x54 - 800849c: 009b lsls r3, r3, #2 - 800849e: 0899 lsrs r1, r3, #2 - 80084a0: 687b ldr r3, [r7, #4] - 80084a2: 695a ldr r2, [r3, #20] - 80084a4: 4b19 ldr r3, [pc, #100] ; (800850c ) - 80084a6: 430a orrs r2, r1 - 80084a8: 655a str r2, [r3, #84] ; 0x54 - - if (PeriphClkInit->AdcClockSelection == RCC_ADCCLKSOURCE_PLLADC) - 80084aa: 687b ldr r3, [r7, #4] - 80084ac: 695a ldr r2, [r3, #20] - 80084ae: 2380 movs r3, #128 ; 0x80 - 80084b0: 05db lsls r3, r3, #23 - 80084b2: 429a cmp r2, r3 - 80084b4: d106 bne.n 80084c4 - { - /* Enable PLLPCLK output */ - __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); - 80084b6: 4b15 ldr r3, [pc, #84] ; (800850c ) - 80084b8: 68da ldr r2, [r3, #12] - 80084ba: 4b14 ldr r3, [pc, #80] ; (800850c ) - 80084bc: 2180 movs r1, #128 ; 0x80 - 80084be: 0249 lsls r1, r1, #9 - 80084c0: 430a orrs r2, r1 - 80084c2: 60da str r2, [r3, #12] - } - } -#endif /* RCC_CCIPR_TIM15SEL */ - - /*-------------------------- I2S1 clock source configuration ---------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) - 80084c4: 687b ldr r3, [r7, #4] - 80084c6: 681a ldr r2, [r3, #0] - 80084c8: 2380 movs r3, #128 ; 0x80 - 80084ca: 011b lsls r3, r3, #4 - 80084cc: 4013 ands r3, r2 - 80084ce: d016 beq.n 80084fe - { - /* Check the parameters */ - assert_param(IS_RCC_I2S1CLKSOURCE(PeriphClkInit->I2s1ClockSelection)); - - /* Configure the I2S1 clock source */ - __HAL_RCC_I2S1_CONFIG(PeriphClkInit->I2s1ClockSelection); - 80084d0: 4b0e ldr r3, [pc, #56] ; (800850c ) - 80084d2: 6d5b ldr r3, [r3, #84] ; 0x54 - 80084d4: 4a14 ldr r2, [pc, #80] ; (8008528 ) - 80084d6: 4013 ands r3, r2 - 80084d8: 0019 movs r1, r3 - 80084da: 687b ldr r3, [r7, #4] - 80084dc: 691a ldr r2, [r3, #16] - 80084de: 4b0b ldr r3, [pc, #44] ; (800850c ) - 80084e0: 430a orrs r2, r1 - 80084e2: 655a str r2, [r3, #84] ; 0x54 - - if (PeriphClkInit->I2s1ClockSelection == RCC_I2S1CLKSOURCE_PLL) - 80084e4: 687b ldr r3, [r7, #4] - 80084e6: 691a ldr r2, [r3, #16] - 80084e8: 2380 movs r3, #128 ; 0x80 - 80084ea: 01db lsls r3, r3, #7 - 80084ec: 429a cmp r2, r3 - 80084ee: d106 bne.n 80084fe - { - /* Enable PLLPCLK output */ - __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); - 80084f0: 4b06 ldr r3, [pc, #24] ; (800850c ) - 80084f2: 68da ldr r2, [r3, #12] - 80084f4: 4b05 ldr r3, [pc, #20] ; (800850c ) - 80084f6: 2180 movs r1, #128 ; 0x80 - 80084f8: 0249 lsls r1, r1, #9 - 80084fa: 430a orrs r2, r1 - 80084fc: 60da str r2, [r3, #12] - __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); - } - } -#endif /* FDCAN1 || FDCAN2 */ - - return status; - 80084fe: 2312 movs r3, #18 - 8008500: 18fb adds r3, r7, r3 - 8008502: 781b ldrb r3, [r3, #0] -} - 8008504: 0018 movs r0, r3 - 8008506: 46bd mov sp, r7 - 8008508: b006 add sp, #24 - 800850a: bd80 pop {r7, pc} - 800850c: 40021000 .word 0x40021000 - 8008510: 40007000 .word 0x40007000 - 8008514: fffffcff .word 0xfffffcff - 8008518: fffeffff .word 0xfffeffff - 800851c: 00001388 .word 0x00001388 - 8008520: efffffff .word 0xefffffff - 8008524: ffffcfff .word 0xffffcfff - 8008528: ffff3fff .word 0xffff3fff - -0800852c : - * @param hspi pointer to a SPI_HandleTypeDef structure that contains - * the configuration information for SPI module. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) -{ - 800852c: b580 push {r7, lr} - 800852e: b084 sub sp, #16 - 8008530: af00 add r7, sp, #0 - 8008532: 6078 str r0, [r7, #4] - uint32_t frxth; - - /* Check the SPI handle allocation */ - if (hspi == NULL) - 8008534: 687b ldr r3, [r7, #4] - 8008536: 2b00 cmp r3, #0 - 8008538: d101 bne.n 800853e - { - return HAL_ERROR; - 800853a: 2301 movs r3, #1 - 800853c: e0a8 b.n 8008690 - assert_param(IS_SPI_NSS(hspi->Init.NSS)); - assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); - assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); - assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); - assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); - if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) - 800853e: 687b ldr r3, [r7, #4] - 8008540: 6a5b ldr r3, [r3, #36] ; 0x24 - 8008542: 2b00 cmp r3, #0 - 8008544: d109 bne.n 800855a - { - assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); - assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); - - if (hspi->Init.Mode == SPI_MODE_MASTER) - 8008546: 687b ldr r3, [r7, #4] - 8008548: 685a ldr r2, [r3, #4] - 800854a: 2382 movs r3, #130 ; 0x82 - 800854c: 005b lsls r3, r3, #1 - 800854e: 429a cmp r2, r3 - 8008550: d009 beq.n 8008566 - assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); - } - else - { - /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ - hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; - 8008552: 687b ldr r3, [r7, #4] - 8008554: 2200 movs r2, #0 - 8008556: 61da str r2, [r3, #28] - 8008558: e005 b.n 8008566 - else - { - assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); - - /* Force polarity and phase to TI protocaol requirements */ - hspi->Init.CLKPolarity = SPI_POLARITY_LOW; - 800855a: 687b ldr r3, [r7, #4] - 800855c: 2200 movs r2, #0 - 800855e: 611a str r2, [r3, #16] - hspi->Init.CLKPhase = SPI_PHASE_1EDGE; - 8008560: 687b ldr r3, [r7, #4] - 8008562: 2200 movs r2, #0 - 8008564: 615a str r2, [r3, #20] - { - assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); - assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); - } -#else - hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 8008566: 687b ldr r3, [r7, #4] - 8008568: 2200 movs r2, #0 - 800856a: 629a str r2, [r3, #40] ; 0x28 -#endif /* USE_SPI_CRC */ - - if (hspi->State == HAL_SPI_STATE_RESET) - 800856c: 687b ldr r3, [r7, #4] - 800856e: 225d movs r2, #93 ; 0x5d - 8008570: 5c9b ldrb r3, [r3, r2] - 8008572: b2db uxtb r3, r3 - 8008574: 2b00 cmp r3, #0 - 8008576: d107 bne.n 8008588 - { - /* Allocate lock resource and initialize it */ - hspi->Lock = HAL_UNLOCKED; - 8008578: 687b ldr r3, [r7, #4] - 800857a: 225c movs r2, #92 ; 0x5c - 800857c: 2100 movs r1, #0 - 800857e: 5499 strb r1, [r3, r2] - - /* Init the low level hardware : GPIO, CLOCK, NVIC... */ - hspi->MspInitCallback(hspi); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC... */ - HAL_SPI_MspInit(hspi); - 8008580: 687b ldr r3, [r7, #4] - 8008582: 0018 movs r0, r3 - 8008584: f7fb faaa bl 8003adc -#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ - } - - hspi->State = HAL_SPI_STATE_BUSY; - 8008588: 687b ldr r3, [r7, #4] - 800858a: 225d movs r2, #93 ; 0x5d - 800858c: 2102 movs r1, #2 - 800858e: 5499 strb r1, [r3, r2] - - /* Disable the selected SPI peripheral */ - __HAL_SPI_DISABLE(hspi); - 8008590: 687b ldr r3, [r7, #4] - 8008592: 681b ldr r3, [r3, #0] - 8008594: 681a ldr r2, [r3, #0] - 8008596: 687b ldr r3, [r7, #4] - 8008598: 681b ldr r3, [r3, #0] - 800859a: 2140 movs r1, #64 ; 0x40 - 800859c: 438a bics r2, r1 - 800859e: 601a str r2, [r3, #0] - - /* Align by default the rs fifo threshold on the data size */ - if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) - 80085a0: 687b ldr r3, [r7, #4] - 80085a2: 68da ldr r2, [r3, #12] - 80085a4: 23e0 movs r3, #224 ; 0xe0 - 80085a6: 00db lsls r3, r3, #3 - 80085a8: 429a cmp r2, r3 - 80085aa: d902 bls.n 80085b2 - { - frxth = SPI_RXFIFO_THRESHOLD_HF; - 80085ac: 2300 movs r3, #0 - 80085ae: 60fb str r3, [r7, #12] - 80085b0: e002 b.n 80085b8 - } - else - { - frxth = SPI_RXFIFO_THRESHOLD_QF; - 80085b2: 2380 movs r3, #128 ; 0x80 - 80085b4: 015b lsls r3, r3, #5 - 80085b6: 60fb str r3, [r7, #12] - } - - /* CRC calculation is valid only for 16Bit and 8 Bit */ - if ((hspi->Init.DataSize != SPI_DATASIZE_16BIT) && (hspi->Init.DataSize != SPI_DATASIZE_8BIT)) - 80085b8: 687b ldr r3, [r7, #4] - 80085ba: 68da ldr r2, [r3, #12] - 80085bc: 23f0 movs r3, #240 ; 0xf0 - 80085be: 011b lsls r3, r3, #4 - 80085c0: 429a cmp r2, r3 - 80085c2: d008 beq.n 80085d6 - 80085c4: 687b ldr r3, [r7, #4] - 80085c6: 68da ldr r2, [r3, #12] - 80085c8: 23e0 movs r3, #224 ; 0xe0 - 80085ca: 00db lsls r3, r3, #3 - 80085cc: 429a cmp r2, r3 - 80085ce: d002 beq.n 80085d6 - { - /* CRC must be disabled */ - hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 80085d0: 687b ldr r3, [r7, #4] - 80085d2: 2200 movs r2, #0 - 80085d4: 629a str r2, [r3, #40] ; 0x28 - } - - /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ - /* Configure : SPI Mode, Communication Mode, Clock polarity and phase, NSS management, - Communication speed, First bit and CRC calculation state */ - WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | - 80085d6: 687b ldr r3, [r7, #4] - 80085d8: 685a ldr r2, [r3, #4] - 80085da: 2382 movs r3, #130 ; 0x82 - 80085dc: 005b lsls r3, r3, #1 - 80085de: 401a ands r2, r3 - 80085e0: 687b ldr r3, [r7, #4] - 80085e2: 6899 ldr r1, [r3, #8] - 80085e4: 2384 movs r3, #132 ; 0x84 - 80085e6: 021b lsls r3, r3, #8 - 80085e8: 400b ands r3, r1 - 80085ea: 431a orrs r2, r3 - 80085ec: 687b ldr r3, [r7, #4] - 80085ee: 691b ldr r3, [r3, #16] - 80085f0: 2102 movs r1, #2 - 80085f2: 400b ands r3, r1 - 80085f4: 431a orrs r2, r3 - 80085f6: 687b ldr r3, [r7, #4] - 80085f8: 695b ldr r3, [r3, #20] - 80085fa: 2101 movs r1, #1 - 80085fc: 400b ands r3, r1 - 80085fe: 431a orrs r2, r3 - 8008600: 687b ldr r3, [r7, #4] - 8008602: 6999 ldr r1, [r3, #24] - 8008604: 2380 movs r3, #128 ; 0x80 - 8008606: 009b lsls r3, r3, #2 - 8008608: 400b ands r3, r1 - 800860a: 431a orrs r2, r3 - 800860c: 687b ldr r3, [r7, #4] - 800860e: 69db ldr r3, [r3, #28] - 8008610: 2138 movs r1, #56 ; 0x38 - 8008612: 400b ands r3, r1 - 8008614: 431a orrs r2, r3 - 8008616: 687b ldr r3, [r7, #4] - 8008618: 6a1b ldr r3, [r3, #32] - 800861a: 2180 movs r1, #128 ; 0x80 - 800861c: 400b ands r3, r1 - 800861e: 431a orrs r2, r3 - 8008620: 0011 movs r1, r2 - 8008622: 687b ldr r3, [r7, #4] - 8008624: 6a9a ldr r2, [r3, #40] ; 0x28 - 8008626: 2380 movs r3, #128 ; 0x80 - 8008628: 019b lsls r3, r3, #6 - 800862a: 401a ands r2, r3 - 800862c: 687b ldr r3, [r7, #4] - 800862e: 681b ldr r3, [r3, #0] - 8008630: 430a orrs r2, r1 - 8008632: 601a str r2, [r3, #0] - } - } -#endif /* USE_SPI_CRC */ - - /* Configure : NSS management, TI Mode, NSS Pulse, Data size and Rx Fifo threshold */ - WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | - 8008634: 687b ldr r3, [r7, #4] - 8008636: 699b ldr r3, [r3, #24] - 8008638: 0c1b lsrs r3, r3, #16 - 800863a: 2204 movs r2, #4 - 800863c: 401a ands r2, r3 - 800863e: 687b ldr r3, [r7, #4] - 8008640: 6a5b ldr r3, [r3, #36] ; 0x24 - 8008642: 2110 movs r1, #16 - 8008644: 400b ands r3, r1 - 8008646: 431a orrs r2, r3 - 8008648: 687b ldr r3, [r7, #4] - 800864a: 6b5b ldr r3, [r3, #52] ; 0x34 - 800864c: 2108 movs r1, #8 - 800864e: 400b ands r3, r1 - 8008650: 431a orrs r2, r3 - 8008652: 687b ldr r3, [r7, #4] - 8008654: 68d9 ldr r1, [r3, #12] - 8008656: 23f0 movs r3, #240 ; 0xf0 - 8008658: 011b lsls r3, r3, #4 - 800865a: 400b ands r3, r1 - 800865c: 431a orrs r2, r3 - 800865e: 0011 movs r1, r2 - 8008660: 68fa ldr r2, [r7, #12] - 8008662: 2380 movs r3, #128 ; 0x80 - 8008664: 015b lsls r3, r3, #5 - 8008666: 401a ands r2, r3 - 8008668: 687b ldr r3, [r7, #4] - 800866a: 681b ldr r3, [r3, #0] - 800866c: 430a orrs r2, r1 - 800866e: 605a str r2, [r3, #4] - } -#endif /* USE_SPI_CRC */ - -#if defined(SPI_I2SCFGR_I2SMOD) - /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ - CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); - 8008670: 687b ldr r3, [r7, #4] - 8008672: 681b ldr r3, [r3, #0] - 8008674: 69da ldr r2, [r3, #28] - 8008676: 687b ldr r3, [r7, #4] - 8008678: 681b ldr r3, [r3, #0] - 800867a: 4907 ldr r1, [pc, #28] ; (8008698 ) - 800867c: 400a ands r2, r1 - 800867e: 61da str r2, [r3, #28] -#endif /* SPI_I2SCFGR_I2SMOD */ - - hspi->ErrorCode = HAL_SPI_ERROR_NONE; - 8008680: 687b ldr r3, [r7, #4] - 8008682: 2200 movs r2, #0 - 8008684: 661a str r2, [r3, #96] ; 0x60 - hspi->State = HAL_SPI_STATE_READY; - 8008686: 687b ldr r3, [r7, #4] - 8008688: 225d movs r2, #93 ; 0x5d - 800868a: 2101 movs r1, #1 - 800868c: 5499 strb r1, [r3, r2] - - return HAL_OK; - 800868e: 2300 movs r3, #0 -} - 8008690: 0018 movs r0, r3 - 8008692: 46bd mov sp, r7 - 8008694: b004 add sp, #16 - 8008696: bd80 pop {r7, pc} - 8008698: fffff7ff .word 0xfffff7ff - -0800869c : - * @param Size amount of data to be received - * @param Timeout Timeout duration - * @retval HAL status - */ -HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout) -{ - 800869c: b590 push {r4, r7, lr} - 800869e: b089 sub sp, #36 ; 0x24 - 80086a0: af02 add r7, sp, #8 - 80086a2: 60f8 str r0, [r7, #12] - 80086a4: 60b9 str r1, [r7, #8] - 80086a6: 603b str r3, [r7, #0] - 80086a8: 1dbb adds r3, r7, #6 - 80086aa: 801a strh r2, [r3, #0] - __IO uint32_t tmpreg = 0U; - __IO uint8_t *ptmpreg8; - __IO uint8_t tmpreg8 = 0; -#endif /* USE_SPI_CRC */ - uint32_t tickstart; - HAL_StatusTypeDef errorcode = HAL_OK; - 80086ac: 2317 movs r3, #23 - 80086ae: 18fb adds r3, r7, r3 - 80086b0: 2200 movs r2, #0 - 80086b2: 701a strb r2, [r3, #0] - - if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) - 80086b4: 68fb ldr r3, [r7, #12] - 80086b6: 685a ldr r2, [r3, #4] - 80086b8: 2382 movs r3, #130 ; 0x82 - 80086ba: 005b lsls r3, r3, #1 - 80086bc: 429a cmp r2, r3 - 80086be: d113 bne.n 80086e8 - 80086c0: 68fb ldr r3, [r7, #12] - 80086c2: 689b ldr r3, [r3, #8] - 80086c4: 2b00 cmp r3, #0 - 80086c6: d10f bne.n 80086e8 - { - hspi->State = HAL_SPI_STATE_BUSY_RX; - 80086c8: 68fb ldr r3, [r7, #12] - 80086ca: 225d movs r2, #93 ; 0x5d - 80086cc: 2104 movs r1, #4 - 80086ce: 5499 strb r1, [r3, r2] - /* Call transmit-receive function to send Dummy data on Tx line and generate clock on CLK line */ - return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); - 80086d0: 1dbb adds r3, r7, #6 - 80086d2: 881c ldrh r4, [r3, #0] - 80086d4: 68ba ldr r2, [r7, #8] - 80086d6: 68b9 ldr r1, [r7, #8] - 80086d8: 68f8 ldr r0, [r7, #12] - 80086da: 683b ldr r3, [r7, #0] - 80086dc: 9300 str r3, [sp, #0] - 80086de: 0023 movs r3, r4 - 80086e0: f000 f928 bl 8008934 - 80086e4: 0003 movs r3, r0 - 80086e6: e11c b.n 8008922 - } - - /* Process Locked */ - __HAL_LOCK(hspi); - 80086e8: 68fb ldr r3, [r7, #12] - 80086ea: 225c movs r2, #92 ; 0x5c - 80086ec: 5c9b ldrb r3, [r3, r2] - 80086ee: 2b01 cmp r3, #1 - 80086f0: d101 bne.n 80086f6 - 80086f2: 2302 movs r3, #2 - 80086f4: e115 b.n 8008922 - 80086f6: 68fb ldr r3, [r7, #12] - 80086f8: 225c movs r2, #92 ; 0x5c - 80086fa: 2101 movs r1, #1 - 80086fc: 5499 strb r1, [r3, r2] - - /* Init tickstart for timeout management*/ - tickstart = HAL_GetTick(); - 80086fe: f7fd fdaf bl 8006260 - 8008702: 0003 movs r3, r0 - 8008704: 613b str r3, [r7, #16] - - if (hspi->State != HAL_SPI_STATE_READY) - 8008706: 68fb ldr r3, [r7, #12] - 8008708: 225d movs r2, #93 ; 0x5d - 800870a: 5c9b ldrb r3, [r3, r2] - 800870c: b2db uxtb r3, r3 - 800870e: 2b01 cmp r3, #1 - 8008710: d004 beq.n 800871c - { - errorcode = HAL_BUSY; - 8008712: 2317 movs r3, #23 - 8008714: 18fb adds r3, r7, r3 - 8008716: 2202 movs r2, #2 - 8008718: 701a strb r2, [r3, #0] - goto error; - 800871a: e0f7 b.n 800890c - } - - if ((pData == NULL) || (Size == 0U)) - 800871c: 68bb ldr r3, [r7, #8] - 800871e: 2b00 cmp r3, #0 - 8008720: d003 beq.n 800872a - 8008722: 1dbb adds r3, r7, #6 - 8008724: 881b ldrh r3, [r3, #0] - 8008726: 2b00 cmp r3, #0 - 8008728: d104 bne.n 8008734 - { - errorcode = HAL_ERROR; - 800872a: 2317 movs r3, #23 - 800872c: 18fb adds r3, r7, r3 - 800872e: 2201 movs r2, #1 - 8008730: 701a strb r2, [r3, #0] - goto error; - 8008732: e0eb b.n 800890c - } - - /* Set the transaction information */ - hspi->State = HAL_SPI_STATE_BUSY_RX; - 8008734: 68fb ldr r3, [r7, #12] - 8008736: 225d movs r2, #93 ; 0x5d - 8008738: 2104 movs r1, #4 - 800873a: 5499 strb r1, [r3, r2] - hspi->ErrorCode = HAL_SPI_ERROR_NONE; - 800873c: 68fb ldr r3, [r7, #12] - 800873e: 2200 movs r2, #0 - 8008740: 661a str r2, [r3, #96] ; 0x60 - hspi->pRxBuffPtr = (uint8_t *)pData; - 8008742: 68fb ldr r3, [r7, #12] - 8008744: 68ba ldr r2, [r7, #8] - 8008746: 641a str r2, [r3, #64] ; 0x40 - hspi->RxXferSize = Size; - 8008748: 68fb ldr r3, [r7, #12] - 800874a: 1dba adds r2, r7, #6 - 800874c: 2144 movs r1, #68 ; 0x44 - 800874e: 8812 ldrh r2, [r2, #0] - 8008750: 525a strh r2, [r3, r1] - hspi->RxXferCount = Size; - 8008752: 68fb ldr r3, [r7, #12] - 8008754: 1dba adds r2, r7, #6 - 8008756: 2146 movs r1, #70 ; 0x46 - 8008758: 8812 ldrh r2, [r2, #0] - 800875a: 525a strh r2, [r3, r1] - - /*Init field not used in handle to zero */ - hspi->pTxBuffPtr = (uint8_t *)NULL; - 800875c: 68fb ldr r3, [r7, #12] - 800875e: 2200 movs r2, #0 - 8008760: 639a str r2, [r3, #56] ; 0x38 - hspi->TxXferSize = 0U; - 8008762: 68fb ldr r3, [r7, #12] - 8008764: 2200 movs r2, #0 - 8008766: 879a strh r2, [r3, #60] ; 0x3c - hspi->TxXferCount = 0U; - 8008768: 68fb ldr r3, [r7, #12] - 800876a: 2200 movs r2, #0 - 800876c: 87da strh r2, [r3, #62] ; 0x3e - hspi->RxISR = NULL; - 800876e: 68fb ldr r3, [r7, #12] - 8008770: 2200 movs r2, #0 - 8008772: 64da str r2, [r3, #76] ; 0x4c - hspi->TxISR = NULL; - 8008774: 68fb ldr r3, [r7, #12] - 8008776: 2200 movs r2, #0 - 8008778: 651a str r2, [r3, #80] ; 0x50 - hspi->RxXferCount--; - } -#endif /* USE_SPI_CRC */ - - /* Set the Rx Fifo threshold */ - if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) - 800877a: 68fb ldr r3, [r7, #12] - 800877c: 68da ldr r2, [r3, #12] - 800877e: 23e0 movs r3, #224 ; 0xe0 - 8008780: 00db lsls r3, r3, #3 - 8008782: 429a cmp r2, r3 - 8008784: d908 bls.n 8008798 - { - /* Set RX Fifo threshold according the reception data length: 16bit */ - CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); - 8008786: 68fb ldr r3, [r7, #12] - 8008788: 681b ldr r3, [r3, #0] - 800878a: 685a ldr r2, [r3, #4] - 800878c: 68fb ldr r3, [r7, #12] - 800878e: 681b ldr r3, [r3, #0] - 8008790: 4966 ldr r1, [pc, #408] ; (800892c ) - 8008792: 400a ands r2, r1 - 8008794: 605a str r2, [r3, #4] - 8008796: e008 b.n 80087aa - } - else - { - /* Set RX Fifo threshold according the reception data length: 8bit */ - SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); - 8008798: 68fb ldr r3, [r7, #12] - 800879a: 681b ldr r3, [r3, #0] - 800879c: 685a ldr r2, [r3, #4] - 800879e: 68fb ldr r3, [r7, #12] - 80087a0: 681b ldr r3, [r3, #0] - 80087a2: 2180 movs r1, #128 ; 0x80 - 80087a4: 0149 lsls r1, r1, #5 - 80087a6: 430a orrs r2, r1 - 80087a8: 605a str r2, [r3, #4] - } - - /* Configure communication direction: 1Line */ - if (hspi->Init.Direction == SPI_DIRECTION_1LINE) - 80087aa: 68fb ldr r3, [r7, #12] - 80087ac: 689a ldr r2, [r3, #8] - 80087ae: 2380 movs r3, #128 ; 0x80 - 80087b0: 021b lsls r3, r3, #8 - 80087b2: 429a cmp r2, r3 - 80087b4: d10f bne.n 80087d6 - { - /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ - __HAL_SPI_DISABLE(hspi); - 80087b6: 68fb ldr r3, [r7, #12] - 80087b8: 681b ldr r3, [r3, #0] - 80087ba: 681a ldr r2, [r3, #0] - 80087bc: 68fb ldr r3, [r7, #12] - 80087be: 681b ldr r3, [r3, #0] - 80087c0: 2140 movs r1, #64 ; 0x40 - 80087c2: 438a bics r2, r1 - 80087c4: 601a str r2, [r3, #0] - SPI_1LINE_RX(hspi); - 80087c6: 68fb ldr r3, [r7, #12] - 80087c8: 681b ldr r3, [r3, #0] - 80087ca: 681a ldr r2, [r3, #0] - 80087cc: 68fb ldr r3, [r7, #12] - 80087ce: 681b ldr r3, [r3, #0] - 80087d0: 4957 ldr r1, [pc, #348] ; (8008930 ) - 80087d2: 400a ands r2, r1 - 80087d4: 601a str r2, [r3, #0] - } - - /* Check if the SPI is already enabled */ - if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) - 80087d6: 68fb ldr r3, [r7, #12] - 80087d8: 681b ldr r3, [r3, #0] - 80087da: 681b ldr r3, [r3, #0] - 80087dc: 2240 movs r2, #64 ; 0x40 - 80087de: 4013 ands r3, r2 - 80087e0: 2b40 cmp r3, #64 ; 0x40 - 80087e2: d007 beq.n 80087f4 - { - /* Enable SPI peripheral */ - __HAL_SPI_ENABLE(hspi); - 80087e4: 68fb ldr r3, [r7, #12] - 80087e6: 681b ldr r3, [r3, #0] - 80087e8: 681a ldr r2, [r3, #0] - 80087ea: 68fb ldr r3, [r7, #12] - 80087ec: 681b ldr r3, [r3, #0] - 80087ee: 2140 movs r1, #64 ; 0x40 - 80087f0: 430a orrs r2, r1 - 80087f2: 601a str r2, [r3, #0] - } - - /* Receive data in 8 Bit mode */ - if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) - 80087f4: 68fb ldr r3, [r7, #12] - 80087f6: 68da ldr r2, [r3, #12] - 80087f8: 23e0 movs r3, #224 ; 0xe0 - 80087fa: 00db lsls r3, r3, #3 - 80087fc: 429a cmp r2, r3 - 80087fe: d900 bls.n 8008802 - 8008800: e069 b.n 80088d6 - { - /* Transfer loop */ - while (hspi->RxXferCount > 0U) - 8008802: e031 b.n 8008868 - { - /* Check the RXNE flag */ - if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) - 8008804: 68fb ldr r3, [r7, #12] - 8008806: 681b ldr r3, [r3, #0] - 8008808: 689b ldr r3, [r3, #8] - 800880a: 2201 movs r2, #1 - 800880c: 4013 ands r3, r2 - 800880e: 2b01 cmp r3, #1 - 8008810: d117 bne.n 8008842 - { - /* read the received data */ - (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; - 8008812: 68fb ldr r3, [r7, #12] - 8008814: 681b ldr r3, [r3, #0] - 8008816: 330c adds r3, #12 - 8008818: 001a movs r2, r3 - 800881a: 68fb ldr r3, [r7, #12] - 800881c: 6c1b ldr r3, [r3, #64] ; 0x40 - 800881e: 7812 ldrb r2, [r2, #0] - 8008820: b2d2 uxtb r2, r2 - 8008822: 701a strb r2, [r3, #0] - hspi->pRxBuffPtr += sizeof(uint8_t); - 8008824: 68fb ldr r3, [r7, #12] - 8008826: 6c1b ldr r3, [r3, #64] ; 0x40 - 8008828: 1c5a adds r2, r3, #1 - 800882a: 68fb ldr r3, [r7, #12] - 800882c: 641a str r2, [r3, #64] ; 0x40 - hspi->RxXferCount--; - 800882e: 68fb ldr r3, [r7, #12] - 8008830: 2246 movs r2, #70 ; 0x46 - 8008832: 5a9b ldrh r3, [r3, r2] - 8008834: b29b uxth r3, r3 - 8008836: 3b01 subs r3, #1 - 8008838: b299 uxth r1, r3 - 800883a: 68fb ldr r3, [r7, #12] - 800883c: 2246 movs r2, #70 ; 0x46 - 800883e: 5299 strh r1, [r3, r2] - 8008840: e012 b.n 8008868 - } - else - { - /* Timeout management */ - if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) - 8008842: f7fd fd0d bl 8006260 - 8008846: 0002 movs r2, r0 - 8008848: 693b ldr r3, [r7, #16] - 800884a: 1ad3 subs r3, r2, r3 - 800884c: 683a ldr r2, [r7, #0] - 800884e: 429a cmp r2, r3 - 8008850: d802 bhi.n 8008858 - 8008852: 683b ldr r3, [r7, #0] - 8008854: 3301 adds r3, #1 - 8008856: d102 bne.n 800885e - 8008858: 683b ldr r3, [r7, #0] - 800885a: 2b00 cmp r3, #0 - 800885c: d104 bne.n 8008868 - { - errorcode = HAL_TIMEOUT; - 800885e: 2317 movs r3, #23 - 8008860: 18fb adds r3, r7, r3 - 8008862: 2203 movs r2, #3 - 8008864: 701a strb r2, [r3, #0] - goto error; - 8008866: e051 b.n 800890c - while (hspi->RxXferCount > 0U) - 8008868: 68fb ldr r3, [r7, #12] - 800886a: 2246 movs r2, #70 ; 0x46 - 800886c: 5a9b ldrh r3, [r3, r2] - 800886e: b29b uxth r3, r3 - 8008870: 2b00 cmp r3, #0 - 8008872: d1c7 bne.n 8008804 - 8008874: e035 b.n 80088e2 - { - /* Transfer loop */ - while (hspi->RxXferCount > 0U) - { - /* Check the RXNE flag */ - if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) - 8008876: 68fb ldr r3, [r7, #12] - 8008878: 681b ldr r3, [r3, #0] - 800887a: 689b ldr r3, [r3, #8] - 800887c: 2201 movs r2, #1 - 800887e: 4013 ands r3, r2 - 8008880: 2b01 cmp r3, #1 - 8008882: d115 bne.n 80088b0 - { - *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; - 8008884: 68fb ldr r3, [r7, #12] - 8008886: 681b ldr r3, [r3, #0] - 8008888: 68da ldr r2, [r3, #12] - 800888a: 68fb ldr r3, [r7, #12] - 800888c: 6c1b ldr r3, [r3, #64] ; 0x40 - 800888e: b292 uxth r2, r2 - 8008890: 801a strh r2, [r3, #0] - hspi->pRxBuffPtr += sizeof(uint16_t); - 8008892: 68fb ldr r3, [r7, #12] - 8008894: 6c1b ldr r3, [r3, #64] ; 0x40 - 8008896: 1c9a adds r2, r3, #2 - 8008898: 68fb ldr r3, [r7, #12] - 800889a: 641a str r2, [r3, #64] ; 0x40 - hspi->RxXferCount--; - 800889c: 68fb ldr r3, [r7, #12] - 800889e: 2246 movs r2, #70 ; 0x46 - 80088a0: 5a9b ldrh r3, [r3, r2] - 80088a2: b29b uxth r3, r3 - 80088a4: 3b01 subs r3, #1 - 80088a6: b299 uxth r1, r3 - 80088a8: 68fb ldr r3, [r7, #12] - 80088aa: 2246 movs r2, #70 ; 0x46 - 80088ac: 5299 strh r1, [r3, r2] - 80088ae: e012 b.n 80088d6 - } - else - { - /* Timeout management */ - if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) - 80088b0: f7fd fcd6 bl 8006260 - 80088b4: 0002 movs r2, r0 - 80088b6: 693b ldr r3, [r7, #16] - 80088b8: 1ad3 subs r3, r2, r3 - 80088ba: 683a ldr r2, [r7, #0] - 80088bc: 429a cmp r2, r3 - 80088be: d802 bhi.n 80088c6 - 80088c0: 683b ldr r3, [r7, #0] - 80088c2: 3301 adds r3, #1 - 80088c4: d102 bne.n 80088cc - 80088c6: 683b ldr r3, [r7, #0] - 80088c8: 2b00 cmp r3, #0 - 80088ca: d104 bne.n 80088d6 - { - errorcode = HAL_TIMEOUT; - 80088cc: 2317 movs r3, #23 - 80088ce: 18fb adds r3, r7, r3 - 80088d0: 2203 movs r2, #3 - 80088d2: 701a strb r2, [r3, #0] - goto error; - 80088d4: e01a b.n 800890c - while (hspi->RxXferCount > 0U) - 80088d6: 68fb ldr r3, [r7, #12] - 80088d8: 2246 movs r2, #70 ; 0x46 - 80088da: 5a9b ldrh r3, [r3, r2] - 80088dc: b29b uxth r3, r3 - 80088de: 2b00 cmp r3, #0 - 80088e0: d1c9 bne.n 8008876 - } - } -#endif /* USE_SPI_CRC */ - - /* Check the end of the transaction */ - if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) - 80088e2: 693a ldr r2, [r7, #16] - 80088e4: 6839 ldr r1, [r7, #0] - 80088e6: 68fb ldr r3, [r7, #12] - 80088e8: 0018 movs r0, r3 - 80088ea: f000 fb25 bl 8008f38 - 80088ee: 1e03 subs r3, r0, #0 - 80088f0: d002 beq.n 80088f8 - { - hspi->ErrorCode = HAL_SPI_ERROR_FLAG; - 80088f2: 68fb ldr r3, [r7, #12] - 80088f4: 2220 movs r2, #32 - 80088f6: 661a str r2, [r3, #96] ; 0x60 - SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); - __HAL_SPI_CLEAR_CRCERRFLAG(hspi); - } -#endif /* USE_SPI_CRC */ - - if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) - 80088f8: 68fb ldr r3, [r7, #12] - 80088fa: 6e1b ldr r3, [r3, #96] ; 0x60 - 80088fc: 2b00 cmp r3, #0 - 80088fe: d004 beq.n 800890a - { - errorcode = HAL_ERROR; - 8008900: 2317 movs r3, #23 - 8008902: 18fb adds r3, r7, r3 - 8008904: 2201 movs r2, #1 - 8008906: 701a strb r2, [r3, #0] - 8008908: e000 b.n 800890c - } - -error : - 800890a: 46c0 nop ; (mov r8, r8) - hspi->State = HAL_SPI_STATE_READY; - 800890c: 68fb ldr r3, [r7, #12] - 800890e: 225d movs r2, #93 ; 0x5d - 8008910: 2101 movs r1, #1 - 8008912: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hspi); - 8008914: 68fb ldr r3, [r7, #12] - 8008916: 225c movs r2, #92 ; 0x5c - 8008918: 2100 movs r1, #0 - 800891a: 5499 strb r1, [r3, r2] - return errorcode; - 800891c: 2317 movs r3, #23 - 800891e: 18fb adds r3, r7, r3 - 8008920: 781b ldrb r3, [r3, #0] -} - 8008922: 0018 movs r0, r3 - 8008924: 46bd mov sp, r7 - 8008926: b007 add sp, #28 - 8008928: bd90 pop {r4, r7, pc} - 800892a: 46c0 nop ; (mov r8, r8) - 800892c: ffffefff .word 0xffffefff - 8008930: ffffbfff .word 0xffffbfff - -08008934 : - * @param Timeout Timeout duration - * @retval HAL status - */ -HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, - uint32_t Timeout) -{ - 8008934: b580 push {r7, lr} - 8008936: b08a sub sp, #40 ; 0x28 - 8008938: af00 add r7, sp, #0 - 800893a: 60f8 str r0, [r7, #12] - 800893c: 60b9 str r1, [r7, #8] - 800893e: 607a str r2, [r7, #4] - 8008940: 001a movs r2, r3 - 8008942: 1cbb adds r3, r7, #2 - 8008944: 801a strh r2, [r3, #0] - __IO uint8_t *ptmpreg8; - __IO uint8_t tmpreg8 = 0; -#endif /* USE_SPI_CRC */ - - /* Variable used to alternate Rx and Tx during transfer */ - uint32_t txallowed = 1U; - 8008946: 2301 movs r3, #1 - 8008948: 627b str r3, [r7, #36] ; 0x24 - HAL_StatusTypeDef errorcode = HAL_OK; - 800894a: 2323 movs r3, #35 ; 0x23 - 800894c: 18fb adds r3, r7, r3 - 800894e: 2200 movs r2, #0 - 8008950: 701a strb r2, [r3, #0] - - /* Check Direction parameter */ - assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); - - /* Process Locked */ - __HAL_LOCK(hspi); - 8008952: 68fb ldr r3, [r7, #12] - 8008954: 225c movs r2, #92 ; 0x5c - 8008956: 5c9b ldrb r3, [r3, r2] - 8008958: 2b01 cmp r3, #1 - 800895a: d101 bne.n 8008960 - 800895c: 2302 movs r3, #2 - 800895e: e1b5 b.n 8008ccc - 8008960: 68fb ldr r3, [r7, #12] - 8008962: 225c movs r2, #92 ; 0x5c - 8008964: 2101 movs r1, #1 - 8008966: 5499 strb r1, [r3, r2] - - /* Init tickstart for timeout management*/ - tickstart = HAL_GetTick(); - 8008968: f7fd fc7a bl 8006260 - 800896c: 0003 movs r3, r0 - 800896e: 61fb str r3, [r7, #28] - - /* Init temporary variables */ - tmp_state = hspi->State; - 8008970: 201b movs r0, #27 - 8008972: 183b adds r3, r7, r0 - 8008974: 68fa ldr r2, [r7, #12] - 8008976: 215d movs r1, #93 ; 0x5d - 8008978: 5c52 ldrb r2, [r2, r1] - 800897a: 701a strb r2, [r3, #0] - tmp_mode = hspi->Init.Mode; - 800897c: 68fb ldr r3, [r7, #12] - 800897e: 685b ldr r3, [r3, #4] - 8008980: 617b str r3, [r7, #20] - initial_TxXferCount = Size; - 8008982: 2312 movs r3, #18 - 8008984: 18fb adds r3, r7, r3 - 8008986: 1cba adds r2, r7, #2 - 8008988: 8812 ldrh r2, [r2, #0] - 800898a: 801a strh r2, [r3, #0] -#if (USE_SPI_CRC != 0U) - spi_cr1 = READ_REG(hspi->Instance->CR1); - spi_cr2 = READ_REG(hspi->Instance->CR2); -#endif /* USE_SPI_CRC */ - - if (!((tmp_state == HAL_SPI_STATE_READY) || \ - 800898c: 183b adds r3, r7, r0 - 800898e: 781b ldrb r3, [r3, #0] - 8008990: 2b01 cmp r3, #1 - 8008992: d011 beq.n 80089b8 - 8008994: 697a ldr r2, [r7, #20] - 8008996: 2382 movs r3, #130 ; 0x82 - 8008998: 005b lsls r3, r3, #1 - 800899a: 429a cmp r2, r3 - 800899c: d107 bne.n 80089ae - ((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == HAL_SPI_STATE_BUSY_RX)))) - 800899e: 68fb ldr r3, [r7, #12] - 80089a0: 689b ldr r3, [r3, #8] - 80089a2: 2b00 cmp r3, #0 - 80089a4: d103 bne.n 80089ae - 80089a6: 183b adds r3, r7, r0 - 80089a8: 781b ldrb r3, [r3, #0] - 80089aa: 2b04 cmp r3, #4 - 80089ac: d004 beq.n 80089b8 - { - errorcode = HAL_BUSY; - 80089ae: 2323 movs r3, #35 ; 0x23 - 80089b0: 18fb adds r3, r7, r3 - 80089b2: 2202 movs r2, #2 - 80089b4: 701a strb r2, [r3, #0] - goto error; - 80089b6: e17e b.n 8008cb6 - } - - if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U)) - 80089b8: 68bb ldr r3, [r7, #8] - 80089ba: 2b00 cmp r3, #0 - 80089bc: d006 beq.n 80089cc - 80089be: 687b ldr r3, [r7, #4] - 80089c0: 2b00 cmp r3, #0 - 80089c2: d003 beq.n 80089cc - 80089c4: 1cbb adds r3, r7, #2 - 80089c6: 881b ldrh r3, [r3, #0] - 80089c8: 2b00 cmp r3, #0 - 80089ca: d104 bne.n 80089d6 - { - errorcode = HAL_ERROR; - 80089cc: 2323 movs r3, #35 ; 0x23 - 80089ce: 18fb adds r3, r7, r3 - 80089d0: 2201 movs r2, #1 - 80089d2: 701a strb r2, [r3, #0] - goto error; - 80089d4: e16f b.n 8008cb6 - } - - /* Don't overwrite in case of HAL_SPI_STATE_BUSY_RX */ - if (hspi->State != HAL_SPI_STATE_BUSY_RX) - 80089d6: 68fb ldr r3, [r7, #12] - 80089d8: 225d movs r2, #93 ; 0x5d - 80089da: 5c9b ldrb r3, [r3, r2] - 80089dc: b2db uxtb r3, r3 - 80089de: 2b04 cmp r3, #4 - 80089e0: d003 beq.n 80089ea - { - hspi->State = HAL_SPI_STATE_BUSY_TX_RX; - 80089e2: 68fb ldr r3, [r7, #12] - 80089e4: 225d movs r2, #93 ; 0x5d - 80089e6: 2105 movs r1, #5 - 80089e8: 5499 strb r1, [r3, r2] - } - - /* Set the transaction information */ - hspi->ErrorCode = HAL_SPI_ERROR_NONE; - 80089ea: 68fb ldr r3, [r7, #12] - 80089ec: 2200 movs r2, #0 - 80089ee: 661a str r2, [r3, #96] ; 0x60 - hspi->pRxBuffPtr = (uint8_t *)pRxData; - 80089f0: 68fb ldr r3, [r7, #12] - 80089f2: 687a ldr r2, [r7, #4] - 80089f4: 641a str r2, [r3, #64] ; 0x40 - hspi->RxXferCount = Size; - 80089f6: 68fb ldr r3, [r7, #12] - 80089f8: 1cba adds r2, r7, #2 - 80089fa: 2146 movs r1, #70 ; 0x46 - 80089fc: 8812 ldrh r2, [r2, #0] - 80089fe: 525a strh r2, [r3, r1] - hspi->RxXferSize = Size; - 8008a00: 68fb ldr r3, [r7, #12] - 8008a02: 1cba adds r2, r7, #2 - 8008a04: 2144 movs r1, #68 ; 0x44 - 8008a06: 8812 ldrh r2, [r2, #0] - 8008a08: 525a strh r2, [r3, r1] - hspi->pTxBuffPtr = (uint8_t *)pTxData; - 8008a0a: 68fb ldr r3, [r7, #12] - 8008a0c: 68ba ldr r2, [r7, #8] - 8008a0e: 639a str r2, [r3, #56] ; 0x38 - hspi->TxXferCount = Size; - 8008a10: 68fb ldr r3, [r7, #12] - 8008a12: 1cba adds r2, r7, #2 - 8008a14: 8812 ldrh r2, [r2, #0] - 8008a16: 87da strh r2, [r3, #62] ; 0x3e - hspi->TxXferSize = Size; - 8008a18: 68fb ldr r3, [r7, #12] - 8008a1a: 1cba adds r2, r7, #2 - 8008a1c: 8812 ldrh r2, [r2, #0] - 8008a1e: 879a strh r2, [r3, #60] ; 0x3c - - /*Init field not used in handle to zero */ - hspi->RxISR = NULL; - 8008a20: 68fb ldr r3, [r7, #12] - 8008a22: 2200 movs r2, #0 - 8008a24: 64da str r2, [r3, #76] ; 0x4c - hspi->TxISR = NULL; - 8008a26: 68fb ldr r3, [r7, #12] - 8008a28: 2200 movs r2, #0 - 8008a2a: 651a str r2, [r3, #80] ; 0x50 - SPI_RESET_CRC(hspi); - } -#endif /* USE_SPI_CRC */ - - /* Set the Rx Fifo threshold */ - if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) - 8008a2c: 68fb ldr r3, [r7, #12] - 8008a2e: 68da ldr r2, [r3, #12] - 8008a30: 23e0 movs r3, #224 ; 0xe0 - 8008a32: 00db lsls r3, r3, #3 - 8008a34: 429a cmp r2, r3 - 8008a36: d908 bls.n 8008a4a - { - /* Set fiforxthreshold according the reception data length: 16bit */ - CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); - 8008a38: 68fb ldr r3, [r7, #12] - 8008a3a: 681b ldr r3, [r3, #0] - 8008a3c: 685a ldr r2, [r3, #4] - 8008a3e: 68fb ldr r3, [r7, #12] - 8008a40: 681b ldr r3, [r3, #0] - 8008a42: 49a4 ldr r1, [pc, #656] ; (8008cd4 ) - 8008a44: 400a ands r2, r1 - 8008a46: 605a str r2, [r3, #4] - 8008a48: e008 b.n 8008a5c - } - else - { - /* Set fiforxthreshold according the reception data length: 8bit */ - SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); - 8008a4a: 68fb ldr r3, [r7, #12] - 8008a4c: 681b ldr r3, [r3, #0] - 8008a4e: 685a ldr r2, [r3, #4] - 8008a50: 68fb ldr r3, [r7, #12] - 8008a52: 681b ldr r3, [r3, #0] - 8008a54: 2180 movs r1, #128 ; 0x80 - 8008a56: 0149 lsls r1, r1, #5 - 8008a58: 430a orrs r2, r1 - 8008a5a: 605a str r2, [r3, #4] - } - - /* Check if the SPI is already enabled */ - if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) - 8008a5c: 68fb ldr r3, [r7, #12] - 8008a5e: 681b ldr r3, [r3, #0] - 8008a60: 681b ldr r3, [r3, #0] - 8008a62: 2240 movs r2, #64 ; 0x40 - 8008a64: 4013 ands r3, r2 - 8008a66: 2b40 cmp r3, #64 ; 0x40 - 8008a68: d007 beq.n 8008a7a - { - /* Enable SPI peripheral */ - __HAL_SPI_ENABLE(hspi); - 8008a6a: 68fb ldr r3, [r7, #12] - 8008a6c: 681b ldr r3, [r3, #0] - 8008a6e: 681a ldr r2, [r3, #0] - 8008a70: 68fb ldr r3, [r7, #12] - 8008a72: 681b ldr r3, [r3, #0] - 8008a74: 2140 movs r1, #64 ; 0x40 - 8008a76: 430a orrs r2, r1 - 8008a78: 601a str r2, [r3, #0] - } - - /* Transmit and Receive data in 16 Bit mode */ - if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) - 8008a7a: 68fb ldr r3, [r7, #12] - 8008a7c: 68da ldr r2, [r3, #12] - 8008a7e: 23e0 movs r3, #224 ; 0xe0 - 8008a80: 00db lsls r3, r3, #3 - 8008a82: 429a cmp r2, r3 - 8008a84: d800 bhi.n 8008a88 - 8008a86: e07f b.n 8008b88 - { - if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) - 8008a88: 68fb ldr r3, [r7, #12] - 8008a8a: 685b ldr r3, [r3, #4] - 8008a8c: 2b00 cmp r3, #0 - 8008a8e: d005 beq.n 8008a9c - 8008a90: 2312 movs r3, #18 - 8008a92: 18fb adds r3, r7, r3 - 8008a94: 881b ldrh r3, [r3, #0] - 8008a96: 2b01 cmp r3, #1 - 8008a98: d000 beq.n 8008a9c - 8008a9a: e069 b.n 8008b70 - { - hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); - 8008a9c: 68fb ldr r3, [r7, #12] - 8008a9e: 6b9b ldr r3, [r3, #56] ; 0x38 - 8008aa0: 881a ldrh r2, [r3, #0] - 8008aa2: 68fb ldr r3, [r7, #12] - 8008aa4: 681b ldr r3, [r3, #0] - 8008aa6: 60da str r2, [r3, #12] - hspi->pTxBuffPtr += sizeof(uint16_t); - 8008aa8: 68fb ldr r3, [r7, #12] - 8008aaa: 6b9b ldr r3, [r3, #56] ; 0x38 - 8008aac: 1c9a adds r2, r3, #2 - 8008aae: 68fb ldr r3, [r7, #12] - 8008ab0: 639a str r2, [r3, #56] ; 0x38 - hspi->TxXferCount--; - 8008ab2: 68fb ldr r3, [r7, #12] - 8008ab4: 8fdb ldrh r3, [r3, #62] ; 0x3e - 8008ab6: b29b uxth r3, r3 - 8008ab8: 3b01 subs r3, #1 - 8008aba: b29a uxth r2, r3 - 8008abc: 68fb ldr r3, [r7, #12] - 8008abe: 87da strh r2, [r3, #62] ; 0x3e - } - while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) - 8008ac0: e056 b.n 8008b70 - { - /* Check TXE flag */ - if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) - 8008ac2: 68fb ldr r3, [r7, #12] - 8008ac4: 681b ldr r3, [r3, #0] - 8008ac6: 689b ldr r3, [r3, #8] - 8008ac8: 2202 movs r2, #2 - 8008aca: 4013 ands r3, r2 - 8008acc: 2b02 cmp r3, #2 - 8008ace: d11b bne.n 8008b08 - 8008ad0: 68fb ldr r3, [r7, #12] - 8008ad2: 8fdb ldrh r3, [r3, #62] ; 0x3e - 8008ad4: b29b uxth r3, r3 - 8008ad6: 2b00 cmp r3, #0 - 8008ad8: d016 beq.n 8008b08 - 8008ada: 6a7b ldr r3, [r7, #36] ; 0x24 - 8008adc: 2b01 cmp r3, #1 - 8008ade: d113 bne.n 8008b08 - { - hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); - 8008ae0: 68fb ldr r3, [r7, #12] - 8008ae2: 6b9b ldr r3, [r3, #56] ; 0x38 - 8008ae4: 881a ldrh r2, [r3, #0] - 8008ae6: 68fb ldr r3, [r7, #12] - 8008ae8: 681b ldr r3, [r3, #0] - 8008aea: 60da str r2, [r3, #12] - hspi->pTxBuffPtr += sizeof(uint16_t); - 8008aec: 68fb ldr r3, [r7, #12] - 8008aee: 6b9b ldr r3, [r3, #56] ; 0x38 - 8008af0: 1c9a adds r2, r3, #2 - 8008af2: 68fb ldr r3, [r7, #12] - 8008af4: 639a str r2, [r3, #56] ; 0x38 - hspi->TxXferCount--; - 8008af6: 68fb ldr r3, [r7, #12] - 8008af8: 8fdb ldrh r3, [r3, #62] ; 0x3e - 8008afa: b29b uxth r3, r3 - 8008afc: 3b01 subs r3, #1 - 8008afe: b29a uxth r2, r3 - 8008b00: 68fb ldr r3, [r7, #12] - 8008b02: 87da strh r2, [r3, #62] ; 0x3e - /* Next Data is a reception (Rx). Tx not allowed */ - txallowed = 0U; - 8008b04: 2300 movs r3, #0 - 8008b06: 627b str r3, [r7, #36] ; 0x24 - } -#endif /* USE_SPI_CRC */ - } - - /* Check RXNE flag */ - if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) - 8008b08: 68fb ldr r3, [r7, #12] - 8008b0a: 681b ldr r3, [r3, #0] - 8008b0c: 689b ldr r3, [r3, #8] - 8008b0e: 2201 movs r2, #1 - 8008b10: 4013 ands r3, r2 - 8008b12: 2b01 cmp r3, #1 - 8008b14: d11c bne.n 8008b50 - 8008b16: 68fb ldr r3, [r7, #12] - 8008b18: 2246 movs r2, #70 ; 0x46 - 8008b1a: 5a9b ldrh r3, [r3, r2] - 8008b1c: b29b uxth r3, r3 - 8008b1e: 2b00 cmp r3, #0 - 8008b20: d016 beq.n 8008b50 - { - *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; - 8008b22: 68fb ldr r3, [r7, #12] - 8008b24: 681b ldr r3, [r3, #0] - 8008b26: 68da ldr r2, [r3, #12] - 8008b28: 68fb ldr r3, [r7, #12] - 8008b2a: 6c1b ldr r3, [r3, #64] ; 0x40 - 8008b2c: b292 uxth r2, r2 - 8008b2e: 801a strh r2, [r3, #0] - hspi->pRxBuffPtr += sizeof(uint16_t); - 8008b30: 68fb ldr r3, [r7, #12] - 8008b32: 6c1b ldr r3, [r3, #64] ; 0x40 - 8008b34: 1c9a adds r2, r3, #2 - 8008b36: 68fb ldr r3, [r7, #12] - 8008b38: 641a str r2, [r3, #64] ; 0x40 - hspi->RxXferCount--; - 8008b3a: 68fb ldr r3, [r7, #12] - 8008b3c: 2246 movs r2, #70 ; 0x46 - 8008b3e: 5a9b ldrh r3, [r3, r2] - 8008b40: b29b uxth r3, r3 - 8008b42: 3b01 subs r3, #1 - 8008b44: b299 uxth r1, r3 - 8008b46: 68fb ldr r3, [r7, #12] - 8008b48: 2246 movs r2, #70 ; 0x46 - 8008b4a: 5299 strh r1, [r3, r2] - /* Next Data is a Transmission (Tx). Tx is allowed */ - txallowed = 1U; - 8008b4c: 2301 movs r3, #1 - 8008b4e: 627b str r3, [r7, #36] ; 0x24 - } - if (((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) - 8008b50: f7fd fb86 bl 8006260 - 8008b54: 0002 movs r2, r0 - 8008b56: 69fb ldr r3, [r7, #28] - 8008b58: 1ad3 subs r3, r2, r3 - 8008b5a: 6b3a ldr r2, [r7, #48] ; 0x30 - 8008b5c: 429a cmp r2, r3 - 8008b5e: d807 bhi.n 8008b70 - 8008b60: 6b3b ldr r3, [r7, #48] ; 0x30 - 8008b62: 3301 adds r3, #1 - 8008b64: d004 beq.n 8008b70 - { - errorcode = HAL_TIMEOUT; - 8008b66: 2323 movs r3, #35 ; 0x23 - 8008b68: 18fb adds r3, r7, r3 - 8008b6a: 2203 movs r2, #3 - 8008b6c: 701a strb r2, [r3, #0] - goto error; - 8008b6e: e0a2 b.n 8008cb6 - while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) - 8008b70: 68fb ldr r3, [r7, #12] - 8008b72: 8fdb ldrh r3, [r3, #62] ; 0x3e - 8008b74: b29b uxth r3, r3 - 8008b76: 2b00 cmp r3, #0 - 8008b78: d1a3 bne.n 8008ac2 - 8008b7a: 68fb ldr r3, [r7, #12] - 8008b7c: 2246 movs r2, #70 ; 0x46 - 8008b7e: 5a9b ldrh r3, [r3, r2] - 8008b80: b29b uxth r3, r3 - 8008b82: 2b00 cmp r3, #0 - 8008b84: d19d bne.n 8008ac2 - 8008b86: e085 b.n 8008c94 - } - } - /* Transmit and Receive data in 8 Bit mode */ - else - { - if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) - 8008b88: 68fb ldr r3, [r7, #12] - 8008b8a: 685b ldr r3, [r3, #4] - 8008b8c: 2b00 cmp r3, #0 - 8008b8e: d005 beq.n 8008b9c - 8008b90: 2312 movs r3, #18 - 8008b92: 18fb adds r3, r7, r3 - 8008b94: 881b ldrh r3, [r3, #0] - 8008b96: 2b01 cmp r3, #1 - 8008b98: d000 beq.n 8008b9c - 8008b9a: e070 b.n 8008c7e - { - *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); - 8008b9c: 68fb ldr r3, [r7, #12] - 8008b9e: 6b9a ldr r2, [r3, #56] ; 0x38 - 8008ba0: 68fb ldr r3, [r7, #12] - 8008ba2: 681b ldr r3, [r3, #0] - 8008ba4: 330c adds r3, #12 - 8008ba6: 7812 ldrb r2, [r2, #0] - 8008ba8: 701a strb r2, [r3, #0] - hspi->pTxBuffPtr += sizeof(uint8_t); - 8008baa: 68fb ldr r3, [r7, #12] - 8008bac: 6b9b ldr r3, [r3, #56] ; 0x38 - 8008bae: 1c5a adds r2, r3, #1 - 8008bb0: 68fb ldr r3, [r7, #12] - 8008bb2: 639a str r2, [r3, #56] ; 0x38 - hspi->TxXferCount--; - 8008bb4: 68fb ldr r3, [r7, #12] - 8008bb6: 8fdb ldrh r3, [r3, #62] ; 0x3e - 8008bb8: b29b uxth r3, r3 - 8008bba: 3b01 subs r3, #1 - 8008bbc: b29a uxth r2, r3 - 8008bbe: 68fb ldr r3, [r7, #12] - 8008bc0: 87da strh r2, [r3, #62] ; 0x3e - } - while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) - 8008bc2: e05c b.n 8008c7e - { - /* Check TXE flag */ - if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) - 8008bc4: 68fb ldr r3, [r7, #12] - 8008bc6: 681b ldr r3, [r3, #0] - 8008bc8: 689b ldr r3, [r3, #8] - 8008bca: 2202 movs r2, #2 - 8008bcc: 4013 ands r3, r2 - 8008bce: 2b02 cmp r3, #2 - 8008bd0: d11c bne.n 8008c0c - 8008bd2: 68fb ldr r3, [r7, #12] - 8008bd4: 8fdb ldrh r3, [r3, #62] ; 0x3e - 8008bd6: b29b uxth r3, r3 - 8008bd8: 2b00 cmp r3, #0 - 8008bda: d017 beq.n 8008c0c - 8008bdc: 6a7b ldr r3, [r7, #36] ; 0x24 - 8008bde: 2b01 cmp r3, #1 - 8008be0: d114 bne.n 8008c0c - { - *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); - 8008be2: 68fb ldr r3, [r7, #12] - 8008be4: 6b9a ldr r2, [r3, #56] ; 0x38 - 8008be6: 68fb ldr r3, [r7, #12] - 8008be8: 681b ldr r3, [r3, #0] - 8008bea: 330c adds r3, #12 - 8008bec: 7812 ldrb r2, [r2, #0] - 8008bee: 701a strb r2, [r3, #0] - hspi->pTxBuffPtr++; - 8008bf0: 68fb ldr r3, [r7, #12] - 8008bf2: 6b9b ldr r3, [r3, #56] ; 0x38 - 8008bf4: 1c5a adds r2, r3, #1 - 8008bf6: 68fb ldr r3, [r7, #12] - 8008bf8: 639a str r2, [r3, #56] ; 0x38 - hspi->TxXferCount--; - 8008bfa: 68fb ldr r3, [r7, #12] - 8008bfc: 8fdb ldrh r3, [r3, #62] ; 0x3e - 8008bfe: b29b uxth r3, r3 - 8008c00: 3b01 subs r3, #1 - 8008c02: b29a uxth r2, r3 - 8008c04: 68fb ldr r3, [r7, #12] - 8008c06: 87da strh r2, [r3, #62] ; 0x3e - /* Next Data is a reception (Rx). Tx not allowed */ - txallowed = 0U; - 8008c08: 2300 movs r3, #0 - 8008c0a: 627b str r3, [r7, #36] ; 0x24 - } -#endif /* USE_SPI_CRC */ - } - - /* Wait until RXNE flag is reset */ - if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) - 8008c0c: 68fb ldr r3, [r7, #12] - 8008c0e: 681b ldr r3, [r3, #0] - 8008c10: 689b ldr r3, [r3, #8] - 8008c12: 2201 movs r2, #1 - 8008c14: 4013 ands r3, r2 - 8008c16: 2b01 cmp r3, #1 - 8008c18: d11e bne.n 8008c58 - 8008c1a: 68fb ldr r3, [r7, #12] - 8008c1c: 2246 movs r2, #70 ; 0x46 - 8008c1e: 5a9b ldrh r3, [r3, r2] - 8008c20: b29b uxth r3, r3 - 8008c22: 2b00 cmp r3, #0 - 8008c24: d018 beq.n 8008c58 - { - (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; - 8008c26: 68fb ldr r3, [r7, #12] - 8008c28: 681b ldr r3, [r3, #0] - 8008c2a: 330c adds r3, #12 - 8008c2c: 001a movs r2, r3 - 8008c2e: 68fb ldr r3, [r7, #12] - 8008c30: 6c1b ldr r3, [r3, #64] ; 0x40 - 8008c32: 7812 ldrb r2, [r2, #0] - 8008c34: b2d2 uxtb r2, r2 - 8008c36: 701a strb r2, [r3, #0] - hspi->pRxBuffPtr++; - 8008c38: 68fb ldr r3, [r7, #12] - 8008c3a: 6c1b ldr r3, [r3, #64] ; 0x40 - 8008c3c: 1c5a adds r2, r3, #1 - 8008c3e: 68fb ldr r3, [r7, #12] - 8008c40: 641a str r2, [r3, #64] ; 0x40 - hspi->RxXferCount--; - 8008c42: 68fb ldr r3, [r7, #12] - 8008c44: 2246 movs r2, #70 ; 0x46 - 8008c46: 5a9b ldrh r3, [r3, r2] - 8008c48: b29b uxth r3, r3 - 8008c4a: 3b01 subs r3, #1 - 8008c4c: b299 uxth r1, r3 - 8008c4e: 68fb ldr r3, [r7, #12] - 8008c50: 2246 movs r2, #70 ; 0x46 - 8008c52: 5299 strh r1, [r3, r2] - /* Next Data is a Transmission (Tx). Tx is allowed */ - txallowed = 1U; - 8008c54: 2301 movs r3, #1 - 8008c56: 627b str r3, [r7, #36] ; 0x24 - } - if ((((HAL_GetTick() - tickstart) >= Timeout) && ((Timeout != HAL_MAX_DELAY))) || (Timeout == 0U)) - 8008c58: f7fd fb02 bl 8006260 - 8008c5c: 0002 movs r2, r0 - 8008c5e: 69fb ldr r3, [r7, #28] - 8008c60: 1ad3 subs r3, r2, r3 - 8008c62: 6b3a ldr r2, [r7, #48] ; 0x30 - 8008c64: 429a cmp r2, r3 - 8008c66: d802 bhi.n 8008c6e - 8008c68: 6b3b ldr r3, [r7, #48] ; 0x30 - 8008c6a: 3301 adds r3, #1 - 8008c6c: d102 bne.n 8008c74 - 8008c6e: 6b3b ldr r3, [r7, #48] ; 0x30 - 8008c70: 2b00 cmp r3, #0 - 8008c72: d104 bne.n 8008c7e - { - errorcode = HAL_TIMEOUT; - 8008c74: 2323 movs r3, #35 ; 0x23 - 8008c76: 18fb adds r3, r7, r3 - 8008c78: 2203 movs r2, #3 - 8008c7a: 701a strb r2, [r3, #0] - goto error; - 8008c7c: e01b b.n 8008cb6 - while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) - 8008c7e: 68fb ldr r3, [r7, #12] - 8008c80: 8fdb ldrh r3, [r3, #62] ; 0x3e - 8008c82: b29b uxth r3, r3 - 8008c84: 2b00 cmp r3, #0 - 8008c86: d19d bne.n 8008bc4 - 8008c88: 68fb ldr r3, [r7, #12] - 8008c8a: 2246 movs r2, #70 ; 0x46 - 8008c8c: 5a9b ldrh r3, [r3, r2] - 8008c8e: b29b uxth r3, r3 - 8008c90: 2b00 cmp r3, #0 - 8008c92: d197 bne.n 8008bc4 - errorcode = HAL_ERROR; - } -#endif /* USE_SPI_CRC */ - - /* Check the end of the transaction */ - if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) - 8008c94: 69fa ldr r2, [r7, #28] - 8008c96: 6b39 ldr r1, [r7, #48] ; 0x30 - 8008c98: 68fb ldr r3, [r7, #12] - 8008c9a: 0018 movs r0, r3 - 8008c9c: f000 f9aa bl 8008ff4 - 8008ca0: 1e03 subs r3, r0, #0 - 8008ca2: d007 beq.n 8008cb4 - { - errorcode = HAL_ERROR; - 8008ca4: 2323 movs r3, #35 ; 0x23 - 8008ca6: 18fb adds r3, r7, r3 - 8008ca8: 2201 movs r2, #1 - 8008caa: 701a strb r2, [r3, #0] - hspi->ErrorCode = HAL_SPI_ERROR_FLAG; - 8008cac: 68fb ldr r3, [r7, #12] - 8008cae: 2220 movs r2, #32 - 8008cb0: 661a str r2, [r3, #96] ; 0x60 - 8008cb2: e000 b.n 8008cb6 - } - -error : - 8008cb4: 46c0 nop ; (mov r8, r8) - hspi->State = HAL_SPI_STATE_READY; - 8008cb6: 68fb ldr r3, [r7, #12] - 8008cb8: 225d movs r2, #93 ; 0x5d - 8008cba: 2101 movs r1, #1 - 8008cbc: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hspi); - 8008cbe: 68fb ldr r3, [r7, #12] - 8008cc0: 225c movs r2, #92 ; 0x5c - 8008cc2: 2100 movs r1, #0 - 8008cc4: 5499 strb r1, [r3, r2] - return errorcode; - 8008cc6: 2323 movs r3, #35 ; 0x23 - 8008cc8: 18fb adds r3, r7, r3 - 8008cca: 781b ldrb r3, [r3, #0] -} - 8008ccc: 0018 movs r0, r3 - 8008cce: 46bd mov sp, r7 - 8008cd0: b00a add sp, #40 ; 0x28 - 8008cd2: bd80 pop {r7, pc} - 8008cd4: ffffefff .word 0xffffefff - -08008cd8 : - * @param Tickstart tick start value - * @retval HAL status - */ -static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, - uint32_t Timeout, uint32_t Tickstart) -{ - 8008cd8: b580 push {r7, lr} - 8008cda: b088 sub sp, #32 - 8008cdc: af00 add r7, sp, #0 - 8008cde: 60f8 str r0, [r7, #12] - 8008ce0: 60b9 str r1, [r7, #8] - 8008ce2: 603b str r3, [r7, #0] - 8008ce4: 1dfb adds r3, r7, #7 - 8008ce6: 701a strb r2, [r3, #0] - __IO uint32_t count; - uint32_t tmp_timeout; - uint32_t tmp_tickstart; - - /* Adjust Timeout value in case of end of transfer */ - tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); - 8008ce8: f7fd faba bl 8006260 - 8008cec: 0002 movs r2, r0 - 8008cee: 6abb ldr r3, [r7, #40] ; 0x28 - 8008cf0: 1a9b subs r3, r3, r2 - 8008cf2: 683a ldr r2, [r7, #0] - 8008cf4: 18d3 adds r3, r2, r3 - 8008cf6: 61fb str r3, [r7, #28] - tmp_tickstart = HAL_GetTick(); - 8008cf8: f7fd fab2 bl 8006260 - 8008cfc: 0003 movs r3, r0 - 8008cfe: 61bb str r3, [r7, #24] - - /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ - count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); - 8008d00: 4b3a ldr r3, [pc, #232] ; (8008dec ) - 8008d02: 681b ldr r3, [r3, #0] - 8008d04: 015b lsls r3, r3, #5 - 8008d06: 0d1b lsrs r3, r3, #20 - 8008d08: 69fa ldr r2, [r7, #28] - 8008d0a: 4353 muls r3, r2 - 8008d0c: 617b str r3, [r7, #20] - - while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) - 8008d0e: e058 b.n 8008dc2 - { - if (Timeout != HAL_MAX_DELAY) - 8008d10: 683b ldr r3, [r7, #0] - 8008d12: 3301 adds r3, #1 - 8008d14: d055 beq.n 8008dc2 - { - if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) - 8008d16: f7fd faa3 bl 8006260 - 8008d1a: 0002 movs r2, r0 - 8008d1c: 69bb ldr r3, [r7, #24] - 8008d1e: 1ad3 subs r3, r2, r3 - 8008d20: 69fa ldr r2, [r7, #28] - 8008d22: 429a cmp r2, r3 - 8008d24: d902 bls.n 8008d2c - 8008d26: 69fb ldr r3, [r7, #28] - 8008d28: 2b00 cmp r3, #0 - 8008d2a: d142 bne.n 8008db2 - /* Disable the SPI and reset the CRC: the CRC value should be cleared - on both master and slave sides in order to resynchronize the master - and slave for their respective CRC calculation */ - - /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ - __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); - 8008d2c: 68fb ldr r3, [r7, #12] - 8008d2e: 681b ldr r3, [r3, #0] - 8008d30: 685a ldr r2, [r3, #4] - 8008d32: 68fb ldr r3, [r7, #12] - 8008d34: 681b ldr r3, [r3, #0] - 8008d36: 21e0 movs r1, #224 ; 0xe0 - 8008d38: 438a bics r2, r1 - 8008d3a: 605a str r2, [r3, #4] - - if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) - 8008d3c: 68fb ldr r3, [r7, #12] - 8008d3e: 685a ldr r2, [r3, #4] - 8008d40: 2382 movs r3, #130 ; 0x82 - 8008d42: 005b lsls r3, r3, #1 - 8008d44: 429a cmp r2, r3 - 8008d46: d113 bne.n 8008d70 - 8008d48: 68fb ldr r3, [r7, #12] - 8008d4a: 689a ldr r2, [r3, #8] - 8008d4c: 2380 movs r3, #128 ; 0x80 - 8008d4e: 021b lsls r3, r3, #8 - 8008d50: 429a cmp r2, r3 - 8008d52: d005 beq.n 8008d60 - || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) - 8008d54: 68fb ldr r3, [r7, #12] - 8008d56: 689a ldr r2, [r3, #8] - 8008d58: 2380 movs r3, #128 ; 0x80 - 8008d5a: 00db lsls r3, r3, #3 - 8008d5c: 429a cmp r2, r3 - 8008d5e: d107 bne.n 8008d70 - { - /* Disable SPI peripheral */ - __HAL_SPI_DISABLE(hspi); - 8008d60: 68fb ldr r3, [r7, #12] - 8008d62: 681b ldr r3, [r3, #0] - 8008d64: 681a ldr r2, [r3, #0] - 8008d66: 68fb ldr r3, [r7, #12] - 8008d68: 681b ldr r3, [r3, #0] - 8008d6a: 2140 movs r1, #64 ; 0x40 - 8008d6c: 438a bics r2, r1 - 8008d6e: 601a str r2, [r3, #0] - } - - /* Reset CRC Calculation */ - if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) - 8008d70: 68fb ldr r3, [r7, #12] - 8008d72: 6a9a ldr r2, [r3, #40] ; 0x28 - 8008d74: 2380 movs r3, #128 ; 0x80 - 8008d76: 019b lsls r3, r3, #6 - 8008d78: 429a cmp r2, r3 - 8008d7a: d110 bne.n 8008d9e - { - SPI_RESET_CRC(hspi); - 8008d7c: 68fb ldr r3, [r7, #12] - 8008d7e: 681b ldr r3, [r3, #0] - 8008d80: 681a ldr r2, [r3, #0] - 8008d82: 68fb ldr r3, [r7, #12] - 8008d84: 681b ldr r3, [r3, #0] - 8008d86: 491a ldr r1, [pc, #104] ; (8008df0 ) - 8008d88: 400a ands r2, r1 - 8008d8a: 601a str r2, [r3, #0] - 8008d8c: 68fb ldr r3, [r7, #12] - 8008d8e: 681b ldr r3, [r3, #0] - 8008d90: 681a ldr r2, [r3, #0] - 8008d92: 68fb ldr r3, [r7, #12] - 8008d94: 681b ldr r3, [r3, #0] - 8008d96: 2180 movs r1, #128 ; 0x80 - 8008d98: 0189 lsls r1, r1, #6 - 8008d9a: 430a orrs r2, r1 - 8008d9c: 601a str r2, [r3, #0] - } - - hspi->State = HAL_SPI_STATE_READY; - 8008d9e: 68fb ldr r3, [r7, #12] - 8008da0: 225d movs r2, #93 ; 0x5d - 8008da2: 2101 movs r1, #1 - 8008da4: 5499 strb r1, [r3, r2] - - /* Process Unlocked */ - __HAL_UNLOCK(hspi); - 8008da6: 68fb ldr r3, [r7, #12] - 8008da8: 225c movs r2, #92 ; 0x5c - 8008daa: 2100 movs r1, #0 - 8008dac: 5499 strb r1, [r3, r2] - - return HAL_TIMEOUT; - 8008dae: 2303 movs r3, #3 - 8008db0: e017 b.n 8008de2 - } - /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ - if (count == 0U) - 8008db2: 697b ldr r3, [r7, #20] - 8008db4: 2b00 cmp r3, #0 - 8008db6: d101 bne.n 8008dbc - { - tmp_timeout = 0U; - 8008db8: 2300 movs r3, #0 - 8008dba: 61fb str r3, [r7, #28] - } - count--; - 8008dbc: 697b ldr r3, [r7, #20] - 8008dbe: 3b01 subs r3, #1 - 8008dc0: 617b str r3, [r7, #20] - while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) - 8008dc2: 68fb ldr r3, [r7, #12] - 8008dc4: 681b ldr r3, [r3, #0] - 8008dc6: 689b ldr r3, [r3, #8] - 8008dc8: 68ba ldr r2, [r7, #8] - 8008dca: 4013 ands r3, r2 - 8008dcc: 68ba ldr r2, [r7, #8] - 8008dce: 1ad3 subs r3, r2, r3 - 8008dd0: 425a negs r2, r3 - 8008dd2: 4153 adcs r3, r2 - 8008dd4: b2db uxtb r3, r3 - 8008dd6: 001a movs r2, r3 - 8008dd8: 1dfb adds r3, r7, #7 - 8008dda: 781b ldrb r3, [r3, #0] - 8008ddc: 429a cmp r2, r3 - 8008dde: d197 bne.n 8008d10 - } - } - - return HAL_OK; - 8008de0: 2300 movs r3, #0 -} - 8008de2: 0018 movs r0, r3 - 8008de4: 46bd mov sp, r7 - 8008de6: b008 add sp, #32 - 8008de8: bd80 pop {r7, pc} - 8008dea: 46c0 nop ; (mov r8, r8) - 8008dec: 20000040 .word 0x20000040 - 8008df0: ffffdfff .word 0xffffdfff - -08008df4 : - * @param Tickstart tick start value - * @retval HAL status - */ -static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint32_t State, - uint32_t Timeout, uint32_t Tickstart) -{ - 8008df4: b580 push {r7, lr} - 8008df6: b08a sub sp, #40 ; 0x28 - 8008df8: af00 add r7, sp, #0 - 8008dfa: 60f8 str r0, [r7, #12] - 8008dfc: 60b9 str r1, [r7, #8] - 8008dfe: 607a str r2, [r7, #4] - 8008e00: 603b str r3, [r7, #0] - __IO uint32_t count; - uint32_t tmp_timeout; - uint32_t tmp_tickstart; - __IO uint8_t *ptmpreg8; - __IO uint8_t tmpreg8 = 0; - 8008e02: 2317 movs r3, #23 - 8008e04: 18fb adds r3, r7, r3 - 8008e06: 2200 movs r2, #0 - 8008e08: 701a strb r2, [r3, #0] - - /* Adjust Timeout value in case of end of transfer */ - tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); - 8008e0a: f7fd fa29 bl 8006260 - 8008e0e: 0002 movs r2, r0 - 8008e10: 6b3b ldr r3, [r7, #48] ; 0x30 - 8008e12: 1a9b subs r3, r3, r2 - 8008e14: 683a ldr r2, [r7, #0] - 8008e16: 18d3 adds r3, r2, r3 - 8008e18: 627b str r3, [r7, #36] ; 0x24 - tmp_tickstart = HAL_GetTick(); - 8008e1a: f7fd fa21 bl 8006260 - 8008e1e: 0003 movs r3, r0 - 8008e20: 623b str r3, [r7, #32] - - /* Initialize the 8bit temporary pointer */ - ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; - 8008e22: 68fb ldr r3, [r7, #12] - 8008e24: 681b ldr r3, [r3, #0] - 8008e26: 330c adds r3, #12 - 8008e28: 61fb str r3, [r7, #28] - - /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ - count = tmp_timeout * ((SystemCoreClock * 35U) >> 20U); - 8008e2a: 4b41 ldr r3, [pc, #260] ; (8008f30 ) - 8008e2c: 681a ldr r2, [r3, #0] - 8008e2e: 0013 movs r3, r2 - 8008e30: 009b lsls r3, r3, #2 - 8008e32: 189b adds r3, r3, r2 - 8008e34: 00da lsls r2, r3, #3 - 8008e36: 1ad3 subs r3, r2, r3 - 8008e38: 0d1b lsrs r3, r3, #20 - 8008e3a: 6a7a ldr r2, [r7, #36] ; 0x24 - 8008e3c: 4353 muls r3, r2 - 8008e3e: 61bb str r3, [r7, #24] - - while ((hspi->Instance->SR & Fifo) != State) - 8008e40: e068 b.n 8008f14 - { - if ((Fifo == SPI_SR_FRLVL) && (State == SPI_FRLVL_EMPTY)) - 8008e42: 68ba ldr r2, [r7, #8] - 8008e44: 23c0 movs r3, #192 ; 0xc0 - 8008e46: 00db lsls r3, r3, #3 - 8008e48: 429a cmp r2, r3 - 8008e4a: d10a bne.n 8008e62 - 8008e4c: 687b ldr r3, [r7, #4] - 8008e4e: 2b00 cmp r3, #0 - 8008e50: d107 bne.n 8008e62 - { - /* Flush Data Register by a blank read */ - tmpreg8 = *ptmpreg8; - 8008e52: 69fb ldr r3, [r7, #28] - 8008e54: 781b ldrb r3, [r3, #0] - 8008e56: b2da uxtb r2, r3 - 8008e58: 2117 movs r1, #23 - 8008e5a: 187b adds r3, r7, r1 - 8008e5c: 701a strb r2, [r3, #0] - /* To avoid GCC warning */ - UNUSED(tmpreg8); - 8008e5e: 187b adds r3, r7, r1 - 8008e60: 781b ldrb r3, [r3, #0] - } - - if (Timeout != HAL_MAX_DELAY) - 8008e62: 683b ldr r3, [r7, #0] - 8008e64: 3301 adds r3, #1 - 8008e66: d055 beq.n 8008f14 - { - if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) - 8008e68: f7fd f9fa bl 8006260 - 8008e6c: 0002 movs r2, r0 - 8008e6e: 6a3b ldr r3, [r7, #32] - 8008e70: 1ad3 subs r3, r2, r3 - 8008e72: 6a7a ldr r2, [r7, #36] ; 0x24 - 8008e74: 429a cmp r2, r3 - 8008e76: d902 bls.n 8008e7e - 8008e78: 6a7b ldr r3, [r7, #36] ; 0x24 - 8008e7a: 2b00 cmp r3, #0 - 8008e7c: d142 bne.n 8008f04 - /* Disable the SPI and reset the CRC: the CRC value should be cleared - on both master and slave sides in order to resynchronize the master - and slave for their respective CRC calculation */ - - /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ - __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); - 8008e7e: 68fb ldr r3, [r7, #12] - 8008e80: 681b ldr r3, [r3, #0] - 8008e82: 685a ldr r2, [r3, #4] - 8008e84: 68fb ldr r3, [r7, #12] - 8008e86: 681b ldr r3, [r3, #0] - 8008e88: 21e0 movs r1, #224 ; 0xe0 - 8008e8a: 438a bics r2, r1 - 8008e8c: 605a str r2, [r3, #4] - - if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) - 8008e8e: 68fb ldr r3, [r7, #12] - 8008e90: 685a ldr r2, [r3, #4] - 8008e92: 2382 movs r3, #130 ; 0x82 - 8008e94: 005b lsls r3, r3, #1 - 8008e96: 429a cmp r2, r3 - 8008e98: d113 bne.n 8008ec2 - 8008e9a: 68fb ldr r3, [r7, #12] - 8008e9c: 689a ldr r2, [r3, #8] - 8008e9e: 2380 movs r3, #128 ; 0x80 - 8008ea0: 021b lsls r3, r3, #8 - 8008ea2: 429a cmp r2, r3 - 8008ea4: d005 beq.n 8008eb2 - || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) - 8008ea6: 68fb ldr r3, [r7, #12] - 8008ea8: 689a ldr r2, [r3, #8] - 8008eaa: 2380 movs r3, #128 ; 0x80 - 8008eac: 00db lsls r3, r3, #3 - 8008eae: 429a cmp r2, r3 - 8008eb0: d107 bne.n 8008ec2 - { - /* Disable SPI peripheral */ - __HAL_SPI_DISABLE(hspi); - 8008eb2: 68fb ldr r3, [r7, #12] - 8008eb4: 681b ldr r3, [r3, #0] - 8008eb6: 681a ldr r2, [r3, #0] - 8008eb8: 68fb ldr r3, [r7, #12] - 8008eba: 681b ldr r3, [r3, #0] - 8008ebc: 2140 movs r1, #64 ; 0x40 - 8008ebe: 438a bics r2, r1 - 8008ec0: 601a str r2, [r3, #0] - } - - /* Reset CRC Calculation */ - if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) - 8008ec2: 68fb ldr r3, [r7, #12] - 8008ec4: 6a9a ldr r2, [r3, #40] ; 0x28 - 8008ec6: 2380 movs r3, #128 ; 0x80 - 8008ec8: 019b lsls r3, r3, #6 - 8008eca: 429a cmp r2, r3 - 8008ecc: d110 bne.n 8008ef0 - { - SPI_RESET_CRC(hspi); - 8008ece: 68fb ldr r3, [r7, #12] - 8008ed0: 681b ldr r3, [r3, #0] - 8008ed2: 681a ldr r2, [r3, #0] - 8008ed4: 68fb ldr r3, [r7, #12] - 8008ed6: 681b ldr r3, [r3, #0] - 8008ed8: 4916 ldr r1, [pc, #88] ; (8008f34 ) - 8008eda: 400a ands r2, r1 - 8008edc: 601a str r2, [r3, #0] - 8008ede: 68fb ldr r3, [r7, #12] - 8008ee0: 681b ldr r3, [r3, #0] - 8008ee2: 681a ldr r2, [r3, #0] - 8008ee4: 68fb ldr r3, [r7, #12] - 8008ee6: 681b ldr r3, [r3, #0] - 8008ee8: 2180 movs r1, #128 ; 0x80 - 8008eea: 0189 lsls r1, r1, #6 - 8008eec: 430a orrs r2, r1 - 8008eee: 601a str r2, [r3, #0] - } - - hspi->State = HAL_SPI_STATE_READY; - 8008ef0: 68fb ldr r3, [r7, #12] - 8008ef2: 225d movs r2, #93 ; 0x5d - 8008ef4: 2101 movs r1, #1 - 8008ef6: 5499 strb r1, [r3, r2] - - /* Process Unlocked */ - __HAL_UNLOCK(hspi); - 8008ef8: 68fb ldr r3, [r7, #12] - 8008efa: 225c movs r2, #92 ; 0x5c - 8008efc: 2100 movs r1, #0 - 8008efe: 5499 strb r1, [r3, r2] - - return HAL_TIMEOUT; - 8008f00: 2303 movs r3, #3 - 8008f02: e010 b.n 8008f26 - } - /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ - if (count == 0U) - 8008f04: 69bb ldr r3, [r7, #24] - 8008f06: 2b00 cmp r3, #0 - 8008f08: d101 bne.n 8008f0e - { - tmp_timeout = 0U; - 8008f0a: 2300 movs r3, #0 - 8008f0c: 627b str r3, [r7, #36] ; 0x24 - } - count--; - 8008f0e: 69bb ldr r3, [r7, #24] - 8008f10: 3b01 subs r3, #1 - 8008f12: 61bb str r3, [r7, #24] - while ((hspi->Instance->SR & Fifo) != State) - 8008f14: 68fb ldr r3, [r7, #12] - 8008f16: 681b ldr r3, [r3, #0] - 8008f18: 689b ldr r3, [r3, #8] - 8008f1a: 68ba ldr r2, [r7, #8] - 8008f1c: 4013 ands r3, r2 - 8008f1e: 687a ldr r2, [r7, #4] - 8008f20: 429a cmp r2, r3 - 8008f22: d18e bne.n 8008e42 - } - } - - return HAL_OK; - 8008f24: 2300 movs r3, #0 -} - 8008f26: 0018 movs r0, r3 - 8008f28: 46bd mov sp, r7 - 8008f2a: b00a add sp, #40 ; 0x28 - 8008f2c: bd80 pop {r7, pc} - 8008f2e: 46c0 nop ; (mov r8, r8) - 8008f30: 20000040 .word 0x20000040 - 8008f34: ffffdfff .word 0xffffdfff - -08008f38 : - * @param Timeout Timeout duration - * @param Tickstart tick start value - * @retval HAL status - */ -static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) -{ - 8008f38: b580 push {r7, lr} - 8008f3a: b086 sub sp, #24 - 8008f3c: af02 add r7, sp, #8 - 8008f3e: 60f8 str r0, [r7, #12] - 8008f40: 60b9 str r1, [r7, #8] - 8008f42: 607a str r2, [r7, #4] - if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) - 8008f44: 68fb ldr r3, [r7, #12] - 8008f46: 685a ldr r2, [r3, #4] - 8008f48: 2382 movs r3, #130 ; 0x82 - 8008f4a: 005b lsls r3, r3, #1 - 8008f4c: 429a cmp r2, r3 - 8008f4e: d113 bne.n 8008f78 - 8008f50: 68fb ldr r3, [r7, #12] - 8008f52: 689a ldr r2, [r3, #8] - 8008f54: 2380 movs r3, #128 ; 0x80 - 8008f56: 021b lsls r3, r3, #8 - 8008f58: 429a cmp r2, r3 - 8008f5a: d005 beq.n 8008f68 - || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) - 8008f5c: 68fb ldr r3, [r7, #12] - 8008f5e: 689a ldr r2, [r3, #8] - 8008f60: 2380 movs r3, #128 ; 0x80 - 8008f62: 00db lsls r3, r3, #3 - 8008f64: 429a cmp r2, r3 - 8008f66: d107 bne.n 8008f78 - { - /* Disable SPI peripheral */ - __HAL_SPI_DISABLE(hspi); - 8008f68: 68fb ldr r3, [r7, #12] - 8008f6a: 681b ldr r3, [r3, #0] - 8008f6c: 681a ldr r2, [r3, #0] - 8008f6e: 68fb ldr r3, [r7, #12] - 8008f70: 681b ldr r3, [r3, #0] - 8008f72: 2140 movs r1, #64 ; 0x40 - 8008f74: 438a bics r2, r1 - 8008f76: 601a str r2, [r3, #0] - } - - /* Control the BSY flag */ - if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) - 8008f78: 68ba ldr r2, [r7, #8] - 8008f7a: 68f8 ldr r0, [r7, #12] - 8008f7c: 687b ldr r3, [r7, #4] - 8008f7e: 9300 str r3, [sp, #0] - 8008f80: 0013 movs r3, r2 - 8008f82: 2200 movs r2, #0 - 8008f84: 2180 movs r1, #128 ; 0x80 - 8008f86: f7ff fea7 bl 8008cd8 - 8008f8a: 1e03 subs r3, r0, #0 - 8008f8c: d007 beq.n 8008f9e - { - SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); - 8008f8e: 68fb ldr r3, [r7, #12] - 8008f90: 6e1b ldr r3, [r3, #96] ; 0x60 - 8008f92: 2220 movs r2, #32 - 8008f94: 431a orrs r2, r3 - 8008f96: 68fb ldr r3, [r7, #12] - 8008f98: 661a str r2, [r3, #96] ; 0x60 - return HAL_TIMEOUT; - 8008f9a: 2303 movs r3, #3 - 8008f9c: e026 b.n 8008fec - } - - if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) - 8008f9e: 68fb ldr r3, [r7, #12] - 8008fa0: 685a ldr r2, [r3, #4] - 8008fa2: 2382 movs r3, #130 ; 0x82 - 8008fa4: 005b lsls r3, r3, #1 - 8008fa6: 429a cmp r2, r3 - 8008fa8: d11f bne.n 8008fea - 8008faa: 68fb ldr r3, [r7, #12] - 8008fac: 689a ldr r2, [r3, #8] - 8008fae: 2380 movs r3, #128 ; 0x80 - 8008fb0: 021b lsls r3, r3, #8 - 8008fb2: 429a cmp r2, r3 - 8008fb4: d005 beq.n 8008fc2 - || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) - 8008fb6: 68fb ldr r3, [r7, #12] - 8008fb8: 689a ldr r2, [r3, #8] - 8008fba: 2380 movs r3, #128 ; 0x80 - 8008fbc: 00db lsls r3, r3, #3 - 8008fbe: 429a cmp r2, r3 - 8008fc0: d113 bne.n 8008fea - { - /* Empty the FRLVL fifo */ - if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HAL_OK) - 8008fc2: 68ba ldr r2, [r7, #8] - 8008fc4: 23c0 movs r3, #192 ; 0xc0 - 8008fc6: 00d9 lsls r1, r3, #3 - 8008fc8: 68f8 ldr r0, [r7, #12] - 8008fca: 687b ldr r3, [r7, #4] - 8008fcc: 9300 str r3, [sp, #0] - 8008fce: 0013 movs r3, r2 - 8008fd0: 2200 movs r2, #0 - 8008fd2: f7ff ff0f bl 8008df4 - 8008fd6: 1e03 subs r3, r0, #0 - 8008fd8: d007 beq.n 8008fea - { - SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); - 8008fda: 68fb ldr r3, [r7, #12] - 8008fdc: 6e1b ldr r3, [r3, #96] ; 0x60 - 8008fde: 2220 movs r2, #32 - 8008fe0: 431a orrs r2, r3 - 8008fe2: 68fb ldr r3, [r7, #12] - 8008fe4: 661a str r2, [r3, #96] ; 0x60 - return HAL_TIMEOUT; - 8008fe6: 2303 movs r3, #3 - 8008fe8: e000 b.n 8008fec - } - } - return HAL_OK; - 8008fea: 2300 movs r3, #0 -} - 8008fec: 0018 movs r0, r3 - 8008fee: 46bd mov sp, r7 - 8008ff0: b004 add sp, #16 - 8008ff2: bd80 pop {r7, pc} - -08008ff4 : - * @param Timeout Timeout duration - * @param Tickstart tick start value - * @retval HAL status - */ -static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) -{ - 8008ff4: b580 push {r7, lr} - 8008ff6: b086 sub sp, #24 - 8008ff8: af02 add r7, sp, #8 - 8008ffa: 60f8 str r0, [r7, #12] - 8008ffc: 60b9 str r1, [r7, #8] - 8008ffe: 607a str r2, [r7, #4] - /* Control if the TX fifo is empty */ - if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FTLVL, SPI_FTLVL_EMPTY, Timeout, Tickstart) != HAL_OK) - 8009000: 68ba ldr r2, [r7, #8] - 8009002: 23c0 movs r3, #192 ; 0xc0 - 8009004: 0159 lsls r1, r3, #5 - 8009006: 68f8 ldr r0, [r7, #12] - 8009008: 687b ldr r3, [r7, #4] - 800900a: 9300 str r3, [sp, #0] - 800900c: 0013 movs r3, r2 - 800900e: 2200 movs r2, #0 - 8009010: f7ff fef0 bl 8008df4 - 8009014: 1e03 subs r3, r0, #0 - 8009016: d007 beq.n 8009028 - { - SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); - 8009018: 68fb ldr r3, [r7, #12] - 800901a: 6e1b ldr r3, [r3, #96] ; 0x60 - 800901c: 2220 movs r2, #32 - 800901e: 431a orrs r2, r3 - 8009020: 68fb ldr r3, [r7, #12] - 8009022: 661a str r2, [r3, #96] ; 0x60 - return HAL_TIMEOUT; - 8009024: 2303 movs r3, #3 - 8009026: e027 b.n 8009078 - } - - /* Control the BSY flag */ - if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) - 8009028: 68ba ldr r2, [r7, #8] - 800902a: 68f8 ldr r0, [r7, #12] - 800902c: 687b ldr r3, [r7, #4] - 800902e: 9300 str r3, [sp, #0] - 8009030: 0013 movs r3, r2 - 8009032: 2200 movs r2, #0 - 8009034: 2180 movs r1, #128 ; 0x80 - 8009036: f7ff fe4f bl 8008cd8 - 800903a: 1e03 subs r3, r0, #0 - 800903c: d007 beq.n 800904e - { - SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); - 800903e: 68fb ldr r3, [r7, #12] - 8009040: 6e1b ldr r3, [r3, #96] ; 0x60 - 8009042: 2220 movs r2, #32 - 8009044: 431a orrs r2, r3 - 8009046: 68fb ldr r3, [r7, #12] - 8009048: 661a str r2, [r3, #96] ; 0x60 - return HAL_TIMEOUT; - 800904a: 2303 movs r3, #3 - 800904c: e014 b.n 8009078 - } - - /* Control if the RX fifo is empty */ - if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HAL_OK) - 800904e: 68ba ldr r2, [r7, #8] - 8009050: 23c0 movs r3, #192 ; 0xc0 - 8009052: 00d9 lsls r1, r3, #3 - 8009054: 68f8 ldr r0, [r7, #12] - 8009056: 687b ldr r3, [r7, #4] - 8009058: 9300 str r3, [sp, #0] - 800905a: 0013 movs r3, r2 - 800905c: 2200 movs r2, #0 - 800905e: f7ff fec9 bl 8008df4 - 8009062: 1e03 subs r3, r0, #0 - 8009064: d007 beq.n 8009076 - { - SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); - 8009066: 68fb ldr r3, [r7, #12] - 8009068: 6e1b ldr r3, [r3, #96] ; 0x60 - 800906a: 2220 movs r2, #32 - 800906c: 431a orrs r2, r3 - 800906e: 68fb ldr r3, [r7, #12] - 8009070: 661a str r2, [r3, #96] ; 0x60 - return HAL_TIMEOUT; - 8009072: 2303 movs r3, #3 - 8009074: e000 b.n 8009078 - } - - return HAL_OK; - 8009076: 2300 movs r3, #0 -} - 8009078: 0018 movs r0, r3 - 800907a: 46bd mov sp, r7 - 800907c: b004 add sp, #16 - 800907e: bd80 pop {r7, pc} - -08009080 : - * 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) -{ - 8009080: b580 push {r7, lr} - 8009082: b082 sub sp, #8 - 8009084: af00 add r7, sp, #0 - 8009086: 6078 str r0, [r7, #4] - /* Check the TIM handle allocation */ - if (htim == NULL) - 8009088: 687b ldr r3, [r7, #4] - 800908a: 2b00 cmp r3, #0 - 800908c: d101 bne.n 8009092 - { - return HAL_ERROR; - 800908e: 2301 movs r3, #1 - 8009090: e04a b.n 8009128 - 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) - 8009092: 687b ldr r3, [r7, #4] - 8009094: 223d movs r2, #61 ; 0x3d - 8009096: 5c9b ldrb r3, [r3, r2] - 8009098: b2db uxtb r3, r3 - 800909a: 2b00 cmp r3, #0 - 800909c: d107 bne.n 80090ae - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 800909e: 687b ldr r3, [r7, #4] - 80090a0: 223c movs r2, #60 ; 0x3c - 80090a2: 2100 movs r1, #0 - 80090a4: 5499 strb r1, [r3, r2] - } - /* 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); - 80090a6: 687b ldr r3, [r7, #4] - 80090a8: 0018 movs r0, r3 - 80090aa: f7fc fea3 bl 8005df4 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 80090ae: 687b ldr r3, [r7, #4] - 80090b0: 223d movs r2, #61 ; 0x3d - 80090b2: 2102 movs r1, #2 - 80090b4: 5499 strb r1, [r3, r2] - - /* Set the Time Base configuration */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 80090b6: 687b ldr r3, [r7, #4] - 80090b8: 681a ldr r2, [r3, #0] - 80090ba: 687b ldr r3, [r7, #4] - 80090bc: 3304 adds r3, #4 - 80090be: 0019 movs r1, r3 - 80090c0: 0010 movs r0, r2 - 80090c2: f000 ff45 bl 8009f50 - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 80090c6: 687b ldr r3, [r7, #4] - 80090c8: 2248 movs r2, #72 ; 0x48 - 80090ca: 2101 movs r1, #1 - 80090cc: 5499 strb r1, [r3, r2] - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80090ce: 687b ldr r3, [r7, #4] - 80090d0: 223e movs r2, #62 ; 0x3e - 80090d2: 2101 movs r1, #1 - 80090d4: 5499 strb r1, [r3, r2] - 80090d6: 687b ldr r3, [r7, #4] - 80090d8: 223f movs r2, #63 ; 0x3f - 80090da: 2101 movs r1, #1 - 80090dc: 5499 strb r1, [r3, r2] - 80090de: 687b ldr r3, [r7, #4] - 80090e0: 2240 movs r2, #64 ; 0x40 - 80090e2: 2101 movs r1, #1 - 80090e4: 5499 strb r1, [r3, r2] - 80090e6: 687b ldr r3, [r7, #4] - 80090e8: 2241 movs r2, #65 ; 0x41 - 80090ea: 2101 movs r1, #1 - 80090ec: 5499 strb r1, [r3, r2] - 80090ee: 687b ldr r3, [r7, #4] - 80090f0: 2242 movs r2, #66 ; 0x42 - 80090f2: 2101 movs r1, #1 - 80090f4: 5499 strb r1, [r3, r2] - 80090f6: 687b ldr r3, [r7, #4] - 80090f8: 2243 movs r2, #67 ; 0x43 - 80090fa: 2101 movs r1, #1 - 80090fc: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80090fe: 687b ldr r3, [r7, #4] - 8009100: 2244 movs r2, #68 ; 0x44 - 8009102: 2101 movs r1, #1 - 8009104: 5499 strb r1, [r3, r2] - 8009106: 687b ldr r3, [r7, #4] - 8009108: 2245 movs r2, #69 ; 0x45 - 800910a: 2101 movs r1, #1 - 800910c: 5499 strb r1, [r3, r2] - 800910e: 687b ldr r3, [r7, #4] - 8009110: 2246 movs r2, #70 ; 0x46 - 8009112: 2101 movs r1, #1 - 8009114: 5499 strb r1, [r3, r2] - 8009116: 687b ldr r3, [r7, #4] - 8009118: 2247 movs r2, #71 ; 0x47 - 800911a: 2101 movs r1, #1 - 800911c: 5499 strb r1, [r3, r2] - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 800911e: 687b ldr r3, [r7, #4] - 8009120: 223d movs r2, #61 ; 0x3d - 8009122: 2101 movs r1, #1 - 8009124: 5499 strb r1, [r3, r2] - - return HAL_OK; - 8009126: 2300 movs r3, #0 -} - 8009128: 0018 movs r0, r3 - 800912a: 46bd mov sp, r7 - 800912c: b002 add sp, #8 - 800912e: bd80 pop {r7, pc} - -08009130 : - * @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) -{ - 8009130: b580 push {r7, lr} - 8009132: b084 sub sp, #16 - 8009134: af00 add r7, sp, #0 - 8009136: 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) - 8009138: 687b ldr r3, [r7, #4] - 800913a: 223d movs r2, #61 ; 0x3d - 800913c: 5c9b ldrb r3, [r3, r2] - 800913e: b2db uxtb r3, r3 - 8009140: 2b01 cmp r3, #1 - 8009142: d001 beq.n 8009148 - { - return HAL_ERROR; - 8009144: 2301 movs r3, #1 - 8009146: e03c b.n 80091c2 - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 8009148: 687b ldr r3, [r7, #4] - 800914a: 223d movs r2, #61 ; 0x3d - 800914c: 2102 movs r1, #2 - 800914e: 5499 strb r1, [r3, r2] - - /* Enable the TIM Update interrupt */ - __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); - 8009150: 687b ldr r3, [r7, #4] - 8009152: 681b ldr r3, [r3, #0] - 8009154: 68da ldr r2, [r3, #12] - 8009156: 687b ldr r3, [r7, #4] - 8009158: 681b ldr r3, [r3, #0] - 800915a: 2101 movs r1, #1 - 800915c: 430a orrs r2, r1 - 800915e: 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)) - 8009160: 687b ldr r3, [r7, #4] - 8009162: 681b ldr r3, [r3, #0] - 8009164: 4a19 ldr r2, [pc, #100] ; (80091cc ) - 8009166: 4293 cmp r3, r2 - 8009168: d009 beq.n 800917e - 800916a: 687b ldr r3, [r7, #4] - 800916c: 681b ldr r3, [r3, #0] - 800916e: 4a18 ldr r2, [pc, #96] ; (80091d0 ) - 8009170: 4293 cmp r3, r2 - 8009172: d004 beq.n 800917e - 8009174: 687b ldr r3, [r7, #4] - 8009176: 681b ldr r3, [r3, #0] - 8009178: 4a16 ldr r2, [pc, #88] ; (80091d4 ) - 800917a: 4293 cmp r3, r2 - 800917c: d116 bne.n 80091ac - { - tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 800917e: 687b ldr r3, [r7, #4] - 8009180: 681b ldr r3, [r3, #0] - 8009182: 689b ldr r3, [r3, #8] - 8009184: 4a14 ldr r2, [pc, #80] ; (80091d8 ) - 8009186: 4013 ands r3, r2 - 8009188: 60fb str r3, [r7, #12] - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 800918a: 68fb ldr r3, [r7, #12] - 800918c: 2b06 cmp r3, #6 - 800918e: d016 beq.n 80091be - 8009190: 68fa ldr r2, [r7, #12] - 8009192: 2380 movs r3, #128 ; 0x80 - 8009194: 025b lsls r3, r3, #9 - 8009196: 429a cmp r2, r3 - 8009198: d011 beq.n 80091be - { - __HAL_TIM_ENABLE(htim); - 800919a: 687b ldr r3, [r7, #4] - 800919c: 681b ldr r3, [r3, #0] - 800919e: 681a ldr r2, [r3, #0] - 80091a0: 687b ldr r3, [r7, #4] - 80091a2: 681b ldr r3, [r3, #0] - 80091a4: 2101 movs r1, #1 - 80091a6: 430a orrs r2, r1 - 80091a8: 601a str r2, [r3, #0] - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80091aa: e008 b.n 80091be - } - } - else - { - __HAL_TIM_ENABLE(htim); - 80091ac: 687b ldr r3, [r7, #4] - 80091ae: 681b ldr r3, [r3, #0] - 80091b0: 681a ldr r2, [r3, #0] - 80091b2: 687b ldr r3, [r7, #4] - 80091b4: 681b ldr r3, [r3, #0] - 80091b6: 2101 movs r1, #1 - 80091b8: 430a orrs r2, r1 - 80091ba: 601a str r2, [r3, #0] - 80091bc: e000 b.n 80091c0 - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80091be: 46c0 nop ; (mov r8, r8) - } - - /* Return function status */ - return HAL_OK; - 80091c0: 2300 movs r3, #0 -} - 80091c2: 0018 movs r0, r3 - 80091c4: 46bd mov sp, r7 - 80091c6: b004 add sp, #16 - 80091c8: bd80 pop {r7, pc} - 80091ca: 46c0 nop ; (mov r8, r8) - 80091cc: 40012c00 .word 0x40012c00 - 80091d0: 40000400 .word 0x40000400 - 80091d4: 40014000 .word 0x40014000 - 80091d8: 00010007 .word 0x00010007 - -080091dc : - * @brief Stops the TIM Base generation in interrupt mode. - * @param htim TIM Base handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim) -{ - 80091dc: b580 push {r7, lr} - 80091de: b082 sub sp, #8 - 80091e0: af00 add r7, sp, #0 - 80091e2: 6078 str r0, [r7, #4] - /* Check the parameters */ - assert_param(IS_TIM_INSTANCE(htim->Instance)); - - /* Disable the TIM Update interrupt */ - __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE); - 80091e4: 687b ldr r3, [r7, #4] - 80091e6: 681b ldr r3, [r3, #0] - 80091e8: 68da ldr r2, [r3, #12] - 80091ea: 687b ldr r3, [r7, #4] - 80091ec: 681b ldr r3, [r3, #0] - 80091ee: 2101 movs r1, #1 - 80091f0: 438a bics r2, r1 - 80091f2: 60da str r2, [r3, #12] - - /* Disable the Peripheral */ - __HAL_TIM_DISABLE(htim); - 80091f4: 687b ldr r3, [r7, #4] - 80091f6: 681b ldr r3, [r3, #0] - 80091f8: 6a1b ldr r3, [r3, #32] - 80091fa: 4a0d ldr r2, [pc, #52] ; (8009230 ) - 80091fc: 4013 ands r3, r2 - 80091fe: d10d bne.n 800921c - 8009200: 687b ldr r3, [r7, #4] - 8009202: 681b ldr r3, [r3, #0] - 8009204: 6a1b ldr r3, [r3, #32] - 8009206: 4a0b ldr r2, [pc, #44] ; (8009234 ) - 8009208: 4013 ands r3, r2 - 800920a: d107 bne.n 800921c - 800920c: 687b ldr r3, [r7, #4] - 800920e: 681b ldr r3, [r3, #0] - 8009210: 681a ldr r2, [r3, #0] - 8009212: 687b ldr r3, [r7, #4] - 8009214: 681b ldr r3, [r3, #0] - 8009216: 2101 movs r1, #1 - 8009218: 438a bics r2, r1 - 800921a: 601a str r2, [r3, #0] - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_READY; - 800921c: 687b ldr r3, [r7, #4] - 800921e: 223d movs r2, #61 ; 0x3d - 8009220: 2101 movs r1, #1 - 8009222: 5499 strb r1, [r3, r2] - - /* Return function status */ - return HAL_OK; - 8009224: 2300 movs r3, #0 -} - 8009226: 0018 movs r0, r3 - 8009228: 46bd mov sp, r7 - 800922a: b002 add sp, #8 - 800922c: bd80 pop {r7, pc} - 800922e: 46c0 nop ; (mov r8, r8) - 8009230: 00001111 .word 0x00001111 - 8009234: 00000444 .word 0x00000444 - -08009238 : - * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() - * @param htim TIM PWM handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) -{ - 8009238: b580 push {r7, lr} - 800923a: b082 sub sp, #8 - 800923c: af00 add r7, sp, #0 - 800923e: 6078 str r0, [r7, #4] - /* Check the TIM handle allocation */ - if (htim == NULL) - 8009240: 687b ldr r3, [r7, #4] - 8009242: 2b00 cmp r3, #0 - 8009244: d101 bne.n 800924a - { - return HAL_ERROR; - 8009246: 2301 movs r3, #1 - 8009248: e04a b.n 80092e0 - 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) - 800924a: 687b ldr r3, [r7, #4] - 800924c: 223d movs r2, #61 ; 0x3d - 800924e: 5c9b ldrb r3, [r3, r2] - 8009250: b2db uxtb r3, r3 - 8009252: 2b00 cmp r3, #0 - 8009254: d107 bne.n 8009266 - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 8009256: 687b ldr r3, [r7, #4] - 8009258: 223c movs r2, #60 ; 0x3c - 800925a: 2100 movs r1, #0 - 800925c: 5499 strb r1, [r3, r2] - } - /* Init the low level hardware : GPIO, CLOCK, NVIC */ - htim->PWM_MspInitCallback(htim); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ - HAL_TIM_PWM_MspInit(htim); - 800925e: 687b ldr r3, [r7, #4] - 8009260: 0018 movs r0, r3 - 8009262: f000 f841 bl 80092e8 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 8009266: 687b ldr r3, [r7, #4] - 8009268: 223d movs r2, #61 ; 0x3d - 800926a: 2102 movs r1, #2 - 800926c: 5499 strb r1, [r3, r2] - - /* Init the base time for the PWM */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 800926e: 687b ldr r3, [r7, #4] - 8009270: 681a ldr r2, [r3, #0] - 8009272: 687b ldr r3, [r7, #4] - 8009274: 3304 adds r3, #4 - 8009276: 0019 movs r1, r3 - 8009278: 0010 movs r0, r2 - 800927a: f000 fe69 bl 8009f50 - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 800927e: 687b ldr r3, [r7, #4] - 8009280: 2248 movs r2, #72 ; 0x48 - 8009282: 2101 movs r1, #1 - 8009284: 5499 strb r1, [r3, r2] - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8009286: 687b ldr r3, [r7, #4] - 8009288: 223e movs r2, #62 ; 0x3e - 800928a: 2101 movs r1, #1 - 800928c: 5499 strb r1, [r3, r2] - 800928e: 687b ldr r3, [r7, #4] - 8009290: 223f movs r2, #63 ; 0x3f - 8009292: 2101 movs r1, #1 - 8009294: 5499 strb r1, [r3, r2] - 8009296: 687b ldr r3, [r7, #4] - 8009298: 2240 movs r2, #64 ; 0x40 - 800929a: 2101 movs r1, #1 - 800929c: 5499 strb r1, [r3, r2] - 800929e: 687b ldr r3, [r7, #4] - 80092a0: 2241 movs r2, #65 ; 0x41 - 80092a2: 2101 movs r1, #1 - 80092a4: 5499 strb r1, [r3, r2] - 80092a6: 687b ldr r3, [r7, #4] - 80092a8: 2242 movs r2, #66 ; 0x42 - 80092aa: 2101 movs r1, #1 - 80092ac: 5499 strb r1, [r3, r2] - 80092ae: 687b ldr r3, [r7, #4] - 80092b0: 2243 movs r2, #67 ; 0x43 - 80092b2: 2101 movs r1, #1 - 80092b4: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80092b6: 687b ldr r3, [r7, #4] - 80092b8: 2244 movs r2, #68 ; 0x44 - 80092ba: 2101 movs r1, #1 - 80092bc: 5499 strb r1, [r3, r2] - 80092be: 687b ldr r3, [r7, #4] - 80092c0: 2245 movs r2, #69 ; 0x45 - 80092c2: 2101 movs r1, #1 - 80092c4: 5499 strb r1, [r3, r2] - 80092c6: 687b ldr r3, [r7, #4] - 80092c8: 2246 movs r2, #70 ; 0x46 - 80092ca: 2101 movs r1, #1 - 80092cc: 5499 strb r1, [r3, r2] - 80092ce: 687b ldr r3, [r7, #4] - 80092d0: 2247 movs r2, #71 ; 0x47 - 80092d2: 2101 movs r1, #1 - 80092d4: 5499 strb r1, [r3, r2] - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 80092d6: 687b ldr r3, [r7, #4] - 80092d8: 223d movs r2, #61 ; 0x3d - 80092da: 2101 movs r1, #1 - 80092dc: 5499 strb r1, [r3, r2] - - return HAL_OK; - 80092de: 2300 movs r3, #0 -} - 80092e0: 0018 movs r0, r3 - 80092e2: 46bd mov sp, r7 - 80092e4: b002 add sp, #8 - 80092e6: bd80 pop {r7, pc} - -080092e8 : - * @brief Initializes the TIM PWM MSP. - * @param htim TIM PWM handle - * @retval None - */ -__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) -{ - 80092e8: b580 push {r7, lr} - 80092ea: b082 sub sp, #8 - 80092ec: af00 add r7, sp, #0 - 80092ee: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_PWM_MspInit could be implemented in the user file - */ -} - 80092f0: 46c0 nop ; (mov r8, r8) - 80092f2: 46bd mov sp, r7 - 80092f4: b002 add sp, #8 - 80092f6: bd80 pop {r7, pc} - -080092f8 : - * @arg TIM_CHANNEL_5: TIM Channel 5 selected - * @arg TIM_CHANNEL_6: TIM Channel 6 selected - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) -{ - 80092f8: b580 push {r7, lr} - 80092fa: b084 sub sp, #16 - 80092fc: af00 add r7, sp, #0 - 80092fe: 6078 str r0, [r7, #4] - 8009300: 6039 str r1, [r7, #0] - - /* Check the parameters */ - assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); - - /* Check the TIM channel state */ - if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) - 8009302: 683b ldr r3, [r7, #0] - 8009304: 2b00 cmp r3, #0 - 8009306: d108 bne.n 800931a - 8009308: 687b ldr r3, [r7, #4] - 800930a: 223e movs r2, #62 ; 0x3e - 800930c: 5c9b ldrb r3, [r3, r2] - 800930e: b2db uxtb r3, r3 - 8009310: 3b01 subs r3, #1 - 8009312: 1e5a subs r2, r3, #1 - 8009314: 4193 sbcs r3, r2 - 8009316: b2db uxtb r3, r3 - 8009318: e037 b.n 800938a - 800931a: 683b ldr r3, [r7, #0] - 800931c: 2b04 cmp r3, #4 - 800931e: d108 bne.n 8009332 - 8009320: 687b ldr r3, [r7, #4] - 8009322: 223f movs r2, #63 ; 0x3f - 8009324: 5c9b ldrb r3, [r3, r2] - 8009326: b2db uxtb r3, r3 - 8009328: 3b01 subs r3, #1 - 800932a: 1e5a subs r2, r3, #1 - 800932c: 4193 sbcs r3, r2 - 800932e: b2db uxtb r3, r3 - 8009330: e02b b.n 800938a - 8009332: 683b ldr r3, [r7, #0] - 8009334: 2b08 cmp r3, #8 - 8009336: d108 bne.n 800934a - 8009338: 687b ldr r3, [r7, #4] - 800933a: 2240 movs r2, #64 ; 0x40 - 800933c: 5c9b ldrb r3, [r3, r2] - 800933e: b2db uxtb r3, r3 - 8009340: 3b01 subs r3, #1 - 8009342: 1e5a subs r2, r3, #1 - 8009344: 4193 sbcs r3, r2 - 8009346: b2db uxtb r3, r3 - 8009348: e01f b.n 800938a - 800934a: 683b ldr r3, [r7, #0] - 800934c: 2b0c cmp r3, #12 - 800934e: d108 bne.n 8009362 - 8009350: 687b ldr r3, [r7, #4] - 8009352: 2241 movs r2, #65 ; 0x41 - 8009354: 5c9b ldrb r3, [r3, r2] - 8009356: b2db uxtb r3, r3 - 8009358: 3b01 subs r3, #1 - 800935a: 1e5a subs r2, r3, #1 - 800935c: 4193 sbcs r3, r2 - 800935e: b2db uxtb r3, r3 - 8009360: e013 b.n 800938a - 8009362: 683b ldr r3, [r7, #0] - 8009364: 2b10 cmp r3, #16 - 8009366: d108 bne.n 800937a - 8009368: 687b ldr r3, [r7, #4] - 800936a: 2242 movs r2, #66 ; 0x42 - 800936c: 5c9b ldrb r3, [r3, r2] - 800936e: b2db uxtb r3, r3 - 8009370: 3b01 subs r3, #1 - 8009372: 1e5a subs r2, r3, #1 - 8009374: 4193 sbcs r3, r2 - 8009376: b2db uxtb r3, r3 - 8009378: e007 b.n 800938a - 800937a: 687b ldr r3, [r7, #4] - 800937c: 2243 movs r2, #67 ; 0x43 - 800937e: 5c9b ldrb r3, [r3, r2] - 8009380: b2db uxtb r3, r3 - 8009382: 3b01 subs r3, #1 - 8009384: 1e5a subs r2, r3, #1 - 8009386: 4193 sbcs r3, r2 - 8009388: b2db uxtb r3, r3 - 800938a: 2b00 cmp r3, #0 - 800938c: d001 beq.n 8009392 - { - return HAL_ERROR; - 800938e: 2301 movs r3, #1 - 8009390: e085 b.n 800949e - } - - /* Set the TIM channel state */ - TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); - 8009392: 683b ldr r3, [r7, #0] - 8009394: 2b00 cmp r3, #0 - 8009396: d104 bne.n 80093a2 - 8009398: 687b ldr r3, [r7, #4] - 800939a: 223e movs r2, #62 ; 0x3e - 800939c: 2102 movs r1, #2 - 800939e: 5499 strb r1, [r3, r2] - 80093a0: e023 b.n 80093ea - 80093a2: 683b ldr r3, [r7, #0] - 80093a4: 2b04 cmp r3, #4 - 80093a6: d104 bne.n 80093b2 - 80093a8: 687b ldr r3, [r7, #4] - 80093aa: 223f movs r2, #63 ; 0x3f - 80093ac: 2102 movs r1, #2 - 80093ae: 5499 strb r1, [r3, r2] - 80093b0: e01b b.n 80093ea - 80093b2: 683b ldr r3, [r7, #0] - 80093b4: 2b08 cmp r3, #8 - 80093b6: d104 bne.n 80093c2 - 80093b8: 687b ldr r3, [r7, #4] - 80093ba: 2240 movs r2, #64 ; 0x40 - 80093bc: 2102 movs r1, #2 - 80093be: 5499 strb r1, [r3, r2] - 80093c0: e013 b.n 80093ea - 80093c2: 683b ldr r3, [r7, #0] - 80093c4: 2b0c cmp r3, #12 - 80093c6: d104 bne.n 80093d2 - 80093c8: 687b ldr r3, [r7, #4] - 80093ca: 2241 movs r2, #65 ; 0x41 - 80093cc: 2102 movs r1, #2 - 80093ce: 5499 strb r1, [r3, r2] - 80093d0: e00b b.n 80093ea - 80093d2: 683b ldr r3, [r7, #0] - 80093d4: 2b10 cmp r3, #16 - 80093d6: d104 bne.n 80093e2 - 80093d8: 687b ldr r3, [r7, #4] - 80093da: 2242 movs r2, #66 ; 0x42 - 80093dc: 2102 movs r1, #2 - 80093de: 5499 strb r1, [r3, r2] - 80093e0: e003 b.n 80093ea - 80093e2: 687b ldr r3, [r7, #4] - 80093e4: 2243 movs r2, #67 ; 0x43 - 80093e6: 2102 movs r1, #2 - 80093e8: 5499 strb r1, [r3, r2] - - /* Enable the Capture compare channel */ - TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); - 80093ea: 687b ldr r3, [r7, #4] - 80093ec: 681b ldr r3, [r3, #0] - 80093ee: 6839 ldr r1, [r7, #0] - 80093f0: 2201 movs r2, #1 - 80093f2: 0018 movs r0, r3 - 80093f4: f001 fb38 bl 800aa68 - - if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) - 80093f8: 687b ldr r3, [r7, #4] - 80093fa: 681b ldr r3, [r3, #0] - 80093fc: 4a2a ldr r2, [pc, #168] ; (80094a8 ) - 80093fe: 4293 cmp r3, r2 - 8009400: d00e beq.n 8009420 - 8009402: 687b ldr r3, [r7, #4] - 8009404: 681b ldr r3, [r3, #0] - 8009406: 4a29 ldr r2, [pc, #164] ; (80094ac ) - 8009408: 4293 cmp r3, r2 - 800940a: d009 beq.n 8009420 - 800940c: 687b ldr r3, [r7, #4] - 800940e: 681b ldr r3, [r3, #0] - 8009410: 4a27 ldr r2, [pc, #156] ; (80094b0 ) - 8009412: 4293 cmp r3, r2 - 8009414: d004 beq.n 8009420 - 8009416: 687b ldr r3, [r7, #4] - 8009418: 681b ldr r3, [r3, #0] - 800941a: 4a26 ldr r2, [pc, #152] ; (80094b4 ) - 800941c: 4293 cmp r3, r2 - 800941e: d101 bne.n 8009424 - 8009420: 2301 movs r3, #1 - 8009422: e000 b.n 8009426 - 8009424: 2300 movs r3, #0 - 8009426: 2b00 cmp r3, #0 - 8009428: d008 beq.n 800943c - { - /* Enable the main output */ - __HAL_TIM_MOE_ENABLE(htim); - 800942a: 687b ldr r3, [r7, #4] - 800942c: 681b ldr r3, [r3, #0] - 800942e: 6c5a ldr r2, [r3, #68] ; 0x44 - 8009430: 687b ldr r3, [r7, #4] - 8009432: 681b ldr r3, [r3, #0] - 8009434: 2180 movs r1, #128 ; 0x80 - 8009436: 0209 lsls r1, r1, #8 - 8009438: 430a orrs r2, r1 - 800943a: 645a str r2, [r3, #68] ; 0x44 - } - - /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ - if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 800943c: 687b ldr r3, [r7, #4] - 800943e: 681b ldr r3, [r3, #0] - 8009440: 4a19 ldr r2, [pc, #100] ; (80094a8 ) - 8009442: 4293 cmp r3, r2 - 8009444: d009 beq.n 800945a - 8009446: 687b ldr r3, [r7, #4] - 8009448: 681b ldr r3, [r3, #0] - 800944a: 4a1b ldr r2, [pc, #108] ; (80094b8 ) - 800944c: 4293 cmp r3, r2 - 800944e: d004 beq.n 800945a - 8009450: 687b ldr r3, [r7, #4] - 8009452: 681b ldr r3, [r3, #0] - 8009454: 4a15 ldr r2, [pc, #84] ; (80094ac ) - 8009456: 4293 cmp r3, r2 - 8009458: d116 bne.n 8009488 - { - tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 800945a: 687b ldr r3, [r7, #4] - 800945c: 681b ldr r3, [r3, #0] - 800945e: 689b ldr r3, [r3, #8] - 8009460: 4a16 ldr r2, [pc, #88] ; (80094bc ) - 8009462: 4013 ands r3, r2 - 8009464: 60fb str r3, [r7, #12] - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8009466: 68fb ldr r3, [r7, #12] - 8009468: 2b06 cmp r3, #6 - 800946a: d016 beq.n 800949a - 800946c: 68fa ldr r2, [r7, #12] - 800946e: 2380 movs r3, #128 ; 0x80 - 8009470: 025b lsls r3, r3, #9 - 8009472: 429a cmp r2, r3 - 8009474: d011 beq.n 800949a - { - __HAL_TIM_ENABLE(htim); - 8009476: 687b ldr r3, [r7, #4] - 8009478: 681b ldr r3, [r3, #0] - 800947a: 681a ldr r2, [r3, #0] - 800947c: 687b ldr r3, [r7, #4] - 800947e: 681b ldr r3, [r3, #0] - 8009480: 2101 movs r1, #1 - 8009482: 430a orrs r2, r1 - 8009484: 601a str r2, [r3, #0] - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8009486: e008 b.n 800949a - } - } - else - { - __HAL_TIM_ENABLE(htim); - 8009488: 687b ldr r3, [r7, #4] - 800948a: 681b ldr r3, [r3, #0] - 800948c: 681a ldr r2, [r3, #0] - 800948e: 687b ldr r3, [r7, #4] - 8009490: 681b ldr r3, [r3, #0] - 8009492: 2101 movs r1, #1 - 8009494: 430a orrs r2, r1 - 8009496: 601a str r2, [r3, #0] - 8009498: e000 b.n 800949c - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 800949a: 46c0 nop ; (mov r8, r8) - } - - /* Return function status */ - return HAL_OK; - 800949c: 2300 movs r3, #0 -} - 800949e: 0018 movs r0, r3 - 80094a0: 46bd mov sp, r7 - 80094a2: b004 add sp, #16 - 80094a4: bd80 pop {r7, pc} - 80094a6: 46c0 nop ; (mov r8, r8) - 80094a8: 40012c00 .word 0x40012c00 - 80094ac: 40014000 .word 0x40014000 - 80094b0: 40014400 .word 0x40014400 - 80094b4: 40014800 .word 0x40014800 - 80094b8: 40000400 .word 0x40000400 - 80094bc: 00010007 .word 0x00010007 - -080094c0 : - * Ex: call @ref HAL_TIM_IC_DeInit() before HAL_TIM_IC_Init() - * @param htim TIM Input Capture handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim) -{ - 80094c0: b580 push {r7, lr} - 80094c2: b082 sub sp, #8 - 80094c4: af00 add r7, sp, #0 - 80094c6: 6078 str r0, [r7, #4] - /* Check the TIM handle allocation */ - if (htim == NULL) - 80094c8: 687b ldr r3, [r7, #4] - 80094ca: 2b00 cmp r3, #0 - 80094cc: d101 bne.n 80094d2 - { - return HAL_ERROR; - 80094ce: 2301 movs r3, #1 - 80094d0: e04a b.n 8009568 - 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) - 80094d2: 687b ldr r3, [r7, #4] - 80094d4: 223d movs r2, #61 ; 0x3d - 80094d6: 5c9b ldrb r3, [r3, r2] - 80094d8: b2db uxtb r3, r3 - 80094da: 2b00 cmp r3, #0 - 80094dc: d107 bne.n 80094ee - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 80094de: 687b ldr r3, [r7, #4] - 80094e0: 223c movs r2, #60 ; 0x3c - 80094e2: 2100 movs r1, #0 - 80094e4: 5499 strb r1, [r3, r2] - } - /* Init the low level hardware : GPIO, CLOCK, NVIC */ - htim->IC_MspInitCallback(htim); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ - HAL_TIM_IC_MspInit(htim); - 80094e6: 687b ldr r3, [r7, #4] - 80094e8: 0018 movs r0, r3 - 80094ea: f000 f841 bl 8009570 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 80094ee: 687b ldr r3, [r7, #4] - 80094f0: 223d movs r2, #61 ; 0x3d - 80094f2: 2102 movs r1, #2 - 80094f4: 5499 strb r1, [r3, r2] - - /* Init the base time for the input capture */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 80094f6: 687b ldr r3, [r7, #4] - 80094f8: 681a ldr r2, [r3, #0] - 80094fa: 687b ldr r3, [r7, #4] - 80094fc: 3304 adds r3, #4 - 80094fe: 0019 movs r1, r3 - 8009500: 0010 movs r0, r2 - 8009502: f000 fd25 bl 8009f50 - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 8009506: 687b ldr r3, [r7, #4] - 8009508: 2248 movs r2, #72 ; 0x48 - 800950a: 2101 movs r1, #1 - 800950c: 5499 strb r1, [r3, r2] - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 800950e: 687b ldr r3, [r7, #4] - 8009510: 223e movs r2, #62 ; 0x3e - 8009512: 2101 movs r1, #1 - 8009514: 5499 strb r1, [r3, r2] - 8009516: 687b ldr r3, [r7, #4] - 8009518: 223f movs r2, #63 ; 0x3f - 800951a: 2101 movs r1, #1 - 800951c: 5499 strb r1, [r3, r2] - 800951e: 687b ldr r3, [r7, #4] - 8009520: 2240 movs r2, #64 ; 0x40 - 8009522: 2101 movs r1, #1 - 8009524: 5499 strb r1, [r3, r2] - 8009526: 687b ldr r3, [r7, #4] - 8009528: 2241 movs r2, #65 ; 0x41 - 800952a: 2101 movs r1, #1 - 800952c: 5499 strb r1, [r3, r2] - 800952e: 687b ldr r3, [r7, #4] - 8009530: 2242 movs r2, #66 ; 0x42 - 8009532: 2101 movs r1, #1 - 8009534: 5499 strb r1, [r3, r2] - 8009536: 687b ldr r3, [r7, #4] - 8009538: 2243 movs r2, #67 ; 0x43 - 800953a: 2101 movs r1, #1 - 800953c: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 800953e: 687b ldr r3, [r7, #4] - 8009540: 2244 movs r2, #68 ; 0x44 - 8009542: 2101 movs r1, #1 - 8009544: 5499 strb r1, [r3, r2] - 8009546: 687b ldr r3, [r7, #4] - 8009548: 2245 movs r2, #69 ; 0x45 - 800954a: 2101 movs r1, #1 - 800954c: 5499 strb r1, [r3, r2] - 800954e: 687b ldr r3, [r7, #4] - 8009550: 2246 movs r2, #70 ; 0x46 - 8009552: 2101 movs r1, #1 - 8009554: 5499 strb r1, [r3, r2] - 8009556: 687b ldr r3, [r7, #4] - 8009558: 2247 movs r2, #71 ; 0x47 - 800955a: 2101 movs r1, #1 - 800955c: 5499 strb r1, [r3, r2] - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 800955e: 687b ldr r3, [r7, #4] - 8009560: 223d movs r2, #61 ; 0x3d - 8009562: 2101 movs r1, #1 - 8009564: 5499 strb r1, [r3, r2] - - return HAL_OK; - 8009566: 2300 movs r3, #0 -} - 8009568: 0018 movs r0, r3 - 800956a: 46bd mov sp, r7 - 800956c: b002 add sp, #8 - 800956e: bd80 pop {r7, pc} - -08009570 : - * @brief Initializes the TIM Input Capture MSP. - * @param htim TIM Input Capture handle - * @retval None - */ -__weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim) -{ - 8009570: b580 push {r7, lr} - 8009572: b082 sub sp, #8 - 8009574: af00 add r7, sp, #0 - 8009576: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_IC_MspInit could be implemented in the user file - */ -} - 8009578: 46c0 nop ; (mov r8, r8) - 800957a: 46bd mov sp, r7 - 800957c: b002 add sp, #8 - 800957e: bd80 pop {r7, pc} - -08009580 : - * @arg TIM_OPMODE_SINGLE: Only one pulse will be generated. - * @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode) -{ - 8009580: b580 push {r7, lr} - 8009582: b082 sub sp, #8 - 8009584: af00 add r7, sp, #0 - 8009586: 6078 str r0, [r7, #4] - 8009588: 6039 str r1, [r7, #0] - /* Check the TIM handle allocation */ - if (htim == NULL) - 800958a: 687b ldr r3, [r7, #4] - 800958c: 2b00 cmp r3, #0 - 800958e: d101 bne.n 8009594 - { - return HAL_ERROR; - 8009590: 2301 movs r3, #1 - 8009592: e042 b.n 800961a - assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); - assert_param(IS_TIM_OPM_MODE(OnePulseMode)); - 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) - 8009594: 687b ldr r3, [r7, #4] - 8009596: 223d movs r2, #61 ; 0x3d - 8009598: 5c9b ldrb r3, [r3, r2] - 800959a: b2db uxtb r3, r3 - 800959c: 2b00 cmp r3, #0 - 800959e: d107 bne.n 80095b0 - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 80095a0: 687b ldr r3, [r7, #4] - 80095a2: 223c movs r2, #60 ; 0x3c - 80095a4: 2100 movs r1, #0 - 80095a6: 5499 strb r1, [r3, r2] - } - /* Init the low level hardware : GPIO, CLOCK, NVIC */ - htim->OnePulse_MspInitCallback(htim); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ - HAL_TIM_OnePulse_MspInit(htim); - 80095a8: 687b ldr r3, [r7, #4] - 80095aa: 0018 movs r0, r3 - 80095ac: f000 f839 bl 8009622 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 80095b0: 687b ldr r3, [r7, #4] - 80095b2: 223d movs r2, #61 ; 0x3d - 80095b4: 2102 movs r1, #2 - 80095b6: 5499 strb r1, [r3, r2] - - /* Configure the Time base in the One Pulse Mode */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 80095b8: 687b ldr r3, [r7, #4] - 80095ba: 681a ldr r2, [r3, #0] - 80095bc: 687b ldr r3, [r7, #4] - 80095be: 3304 adds r3, #4 - 80095c0: 0019 movs r1, r3 - 80095c2: 0010 movs r0, r2 - 80095c4: f000 fcc4 bl 8009f50 - - /* Reset the OPM Bit */ - htim->Instance->CR1 &= ~TIM_CR1_OPM; - 80095c8: 687b ldr r3, [r7, #4] - 80095ca: 681b ldr r3, [r3, #0] - 80095cc: 681a ldr r2, [r3, #0] - 80095ce: 687b ldr r3, [r7, #4] - 80095d0: 681b ldr r3, [r3, #0] - 80095d2: 2108 movs r1, #8 - 80095d4: 438a bics r2, r1 - 80095d6: 601a str r2, [r3, #0] - - /* Configure the OPM Mode */ - htim->Instance->CR1 |= OnePulseMode; - 80095d8: 687b ldr r3, [r7, #4] - 80095da: 681b ldr r3, [r3, #0] - 80095dc: 6819 ldr r1, [r3, #0] - 80095de: 687b ldr r3, [r7, #4] - 80095e0: 681b ldr r3, [r3, #0] - 80095e2: 683a ldr r2, [r7, #0] - 80095e4: 430a orrs r2, r1 - 80095e6: 601a str r2, [r3, #0] - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 80095e8: 687b ldr r3, [r7, #4] - 80095ea: 2248 movs r2, #72 ; 0x48 - 80095ec: 2101 movs r1, #1 - 80095ee: 5499 strb r1, [r3, r2] - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); - 80095f0: 687b ldr r3, [r7, #4] - 80095f2: 223e movs r2, #62 ; 0x3e - 80095f4: 2101 movs r1, #1 - 80095f6: 5499 strb r1, [r3, r2] - TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); - 80095f8: 687b ldr r3, [r7, #4] - 80095fa: 223f movs r2, #63 ; 0x3f - 80095fc: 2101 movs r1, #1 - 80095fe: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); - 8009600: 687b ldr r3, [r7, #4] - 8009602: 2244 movs r2, #68 ; 0x44 - 8009604: 2101 movs r1, #1 - 8009606: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); - 8009608: 687b ldr r3, [r7, #4] - 800960a: 2245 movs r2, #69 ; 0x45 - 800960c: 2101 movs r1, #1 - 800960e: 5499 strb r1, [r3, r2] - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 8009610: 687b ldr r3, [r7, #4] - 8009612: 223d movs r2, #61 ; 0x3d - 8009614: 2101 movs r1, #1 - 8009616: 5499 strb r1, [r3, r2] - - return HAL_OK; - 8009618: 2300 movs r3, #0 -} - 800961a: 0018 movs r0, r3 - 800961c: 46bd mov sp, r7 - 800961e: b002 add sp, #8 - 8009620: bd80 pop {r7, pc} - -08009622 : - * @brief Initializes the TIM One Pulse MSP. - * @param htim TIM One Pulse handle - * @retval None - */ -__weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim) -{ - 8009622: b580 push {r7, lr} - 8009624: b082 sub sp, #8 - 8009626: af00 add r7, sp, #0 - 8009628: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_OnePulse_MspInit could be implemented in the user file - */ -} - 800962a: 46c0 nop ; (mov r8, r8) - 800962c: 46bd mov sp, r7 - 800962e: b002 add sp, #8 - 8009630: bd80 pop {r7, pc} - ... - -08009634 : - * @param htim TIM One Pulse handle - * @param OutputChannel See note above - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel) -{ - 8009634: b5f0 push {r4, r5, r6, r7, lr} - 8009636: b085 sub sp, #20 - 8009638: af00 add r7, sp, #0 - 800963a: 6078 str r0, [r7, #4] - 800963c: 6039 str r1, [r7, #0] - HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); - 800963e: 200f movs r0, #15 - 8009640: 183b adds r3, r7, r0 - 8009642: 687a ldr r2, [r7, #4] - 8009644: 213e movs r1, #62 ; 0x3e - 8009646: 5c52 ldrb r2, [r2, r1] - 8009648: 701a strb r2, [r3, #0] - HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); - 800964a: 240e movs r4, #14 - 800964c: 193b adds r3, r7, r4 - 800964e: 687a ldr r2, [r7, #4] - 8009650: 213f movs r1, #63 ; 0x3f - 8009652: 5c52 ldrb r2, [r2, r1] - 8009654: 701a strb r2, [r3, #0] - HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); - 8009656: 250d movs r5, #13 - 8009658: 197b adds r3, r7, r5 - 800965a: 687a ldr r2, [r7, #4] - 800965c: 2144 movs r1, #68 ; 0x44 - 800965e: 5c52 ldrb r2, [r2, r1] - 8009660: 701a strb r2, [r3, #0] - HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); - 8009662: 260c movs r6, #12 - 8009664: 19bb adds r3, r7, r6 - 8009666: 687a ldr r2, [r7, #4] - 8009668: 2145 movs r1, #69 ; 0x45 - 800966a: 5c52 ldrb r2, [r2, r1] - 800966c: 701a strb r2, [r3, #0] - - /* Prevent unused argument(s) compilation warning */ - UNUSED(OutputChannel); - - /* Check the TIM channels state */ - if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) - 800966e: 183b adds r3, r7, r0 - 8009670: 781b ldrb r3, [r3, #0] - 8009672: 2b01 cmp r3, #1 - 8009674: d10b bne.n 800968e - || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) - 8009676: 193b adds r3, r7, r4 - 8009678: 781b ldrb r3, [r3, #0] - 800967a: 2b01 cmp r3, #1 - 800967c: d107 bne.n 800968e - || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) - 800967e: 197b adds r3, r7, r5 - 8009680: 781b ldrb r3, [r3, #0] - 8009682: 2b01 cmp r3, #1 - 8009684: d103 bne.n 800968e - || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) - 8009686: 19bb adds r3, r7, r6 - 8009688: 781b ldrb r3, [r3, #0] - 800968a: 2b01 cmp r3, #1 - 800968c: d001 beq.n 8009692 - { - return HAL_ERROR; - 800968e: 2301 movs r3, #1 - 8009690: e040 b.n 8009714 - } - - /* Set the TIM channels state */ - TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); - 8009692: 687b ldr r3, [r7, #4] - 8009694: 223e movs r2, #62 ; 0x3e - 8009696: 2102 movs r1, #2 - 8009698: 5499 strb r1, [r3, r2] - TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); - 800969a: 687b ldr r3, [r7, #4] - 800969c: 223f movs r2, #63 ; 0x3f - 800969e: 2102 movs r1, #2 - 80096a0: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); - 80096a2: 687b ldr r3, [r7, #4] - 80096a4: 2244 movs r2, #68 ; 0x44 - 80096a6: 2102 movs r1, #2 - 80096a8: 5499 strb r1, [r3, r2] - TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); - 80096aa: 687b ldr r3, [r7, #4] - 80096ac: 2245 movs r2, #69 ; 0x45 - 80096ae: 2102 movs r1, #2 - 80096b0: 5499 strb r1, [r3, r2] - whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together - - No need to enable the counter, it's enabled automatically by hardware - (the counter starts in response to a stimulus and generate a pulse */ - - TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); - 80096b2: 687b ldr r3, [r7, #4] - 80096b4: 681b ldr r3, [r3, #0] - 80096b6: 2201 movs r2, #1 - 80096b8: 2100 movs r1, #0 - 80096ba: 0018 movs r0, r3 - 80096bc: f001 f9d4 bl 800aa68 - TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); - 80096c0: 687b ldr r3, [r7, #4] - 80096c2: 681b ldr r3, [r3, #0] - 80096c4: 2201 movs r2, #1 - 80096c6: 2104 movs r1, #4 - 80096c8: 0018 movs r0, r3 - 80096ca: f001 f9cd bl 800aa68 - - if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) - 80096ce: 687b ldr r3, [r7, #4] - 80096d0: 681b ldr r3, [r3, #0] - 80096d2: 4a12 ldr r2, [pc, #72] ; (800971c ) - 80096d4: 4293 cmp r3, r2 - 80096d6: d00e beq.n 80096f6 - 80096d8: 687b ldr r3, [r7, #4] - 80096da: 681b ldr r3, [r3, #0] - 80096dc: 4a10 ldr r2, [pc, #64] ; (8009720 ) - 80096de: 4293 cmp r3, r2 - 80096e0: d009 beq.n 80096f6 - 80096e2: 687b ldr r3, [r7, #4] - 80096e4: 681b ldr r3, [r3, #0] - 80096e6: 4a0f ldr r2, [pc, #60] ; (8009724 ) - 80096e8: 4293 cmp r3, r2 - 80096ea: d004 beq.n 80096f6 - 80096ec: 687b ldr r3, [r7, #4] - 80096ee: 681b ldr r3, [r3, #0] - 80096f0: 4a0d ldr r2, [pc, #52] ; (8009728 ) - 80096f2: 4293 cmp r3, r2 - 80096f4: d101 bne.n 80096fa - 80096f6: 2301 movs r3, #1 - 80096f8: e000 b.n 80096fc - 80096fa: 2300 movs r3, #0 - 80096fc: 2b00 cmp r3, #0 - 80096fe: d008 beq.n 8009712 - { - /* Enable the main output */ - __HAL_TIM_MOE_ENABLE(htim); - 8009700: 687b ldr r3, [r7, #4] - 8009702: 681b ldr r3, [r3, #0] - 8009704: 6c5a ldr r2, [r3, #68] ; 0x44 - 8009706: 687b ldr r3, [r7, #4] - 8009708: 681b ldr r3, [r3, #0] - 800970a: 2180 movs r1, #128 ; 0x80 - 800970c: 0209 lsls r1, r1, #8 - 800970e: 430a orrs r2, r1 - 8009710: 645a str r2, [r3, #68] ; 0x44 - } - - /* Return function status */ - return HAL_OK; - 8009712: 2300 movs r3, #0 -} - 8009714: 0018 movs r0, r3 - 8009716: 46bd mov sp, r7 - 8009718: b005 add sp, #20 - 800971a: bdf0 pop {r4, r5, r6, r7, pc} - 800971c: 40012c00 .word 0x40012c00 - 8009720: 40014000 .word 0x40014000 - 8009724: 40014400 .word 0x40014400 - 8009728: 40014800 .word 0x40014800 - -0800972c : - * @brief This function handles TIM interrupts requests. - * @param htim TIM handle - * @retval None - */ -void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) -{ - 800972c: b580 push {r7, lr} - 800972e: b082 sub sp, #8 - 8009730: af00 add r7, sp, #0 - 8009732: 6078 str r0, [r7, #4] - /* Capture compare 1 event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) - 8009734: 687b ldr r3, [r7, #4] - 8009736: 681b ldr r3, [r3, #0] - 8009738: 691b ldr r3, [r3, #16] - 800973a: 2202 movs r2, #2 - 800973c: 4013 ands r3, r2 - 800973e: 2b02 cmp r3, #2 - 8009740: d124 bne.n 800978c - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) - 8009742: 687b ldr r3, [r7, #4] - 8009744: 681b ldr r3, [r3, #0] - 8009746: 68db ldr r3, [r3, #12] - 8009748: 2202 movs r2, #2 - 800974a: 4013 ands r3, r2 - 800974c: 2b02 cmp r3, #2 - 800974e: d11d bne.n 800978c - { - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); - 8009750: 687b ldr r3, [r7, #4] - 8009752: 681b ldr r3, [r3, #0] - 8009754: 2203 movs r2, #3 - 8009756: 4252 negs r2, r2 - 8009758: 611a str r2, [r3, #16] - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; - 800975a: 687b ldr r3, [r7, #4] - 800975c: 2201 movs r2, #1 - 800975e: 771a strb r2, [r3, #28] - - /* Input capture event */ - if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) - 8009760: 687b ldr r3, [r7, #4] - 8009762: 681b ldr r3, [r3, #0] - 8009764: 699b ldr r3, [r3, #24] - 8009766: 2203 movs r2, #3 - 8009768: 4013 ands r3, r2 - 800976a: d004 beq.n 8009776 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->IC_CaptureCallback(htim); -#else - HAL_TIM_IC_CaptureCallback(htim); - 800976c: 687b ldr r3, [r7, #4] - 800976e: 0018 movs r0, r3 - 8009770: f000 fbd6 bl 8009f20 - 8009774: e007 b.n 8009786 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->OC_DelayElapsedCallback(htim); - htim->PWM_PulseFinishedCallback(htim); -#else - HAL_TIM_OC_DelayElapsedCallback(htim); - 8009776: 687b ldr r3, [r7, #4] - 8009778: 0018 movs r0, r3 - 800977a: f000 fbc9 bl 8009f10 - HAL_TIM_PWM_PulseFinishedCallback(htim); - 800977e: 687b ldr r3, [r7, #4] - 8009780: 0018 movs r0, r3 - 8009782: f000 fbd5 bl 8009f30 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8009786: 687b ldr r3, [r7, #4] - 8009788: 2200 movs r2, #0 - 800978a: 771a strb r2, [r3, #28] - } - } - } - /* Capture compare 2 event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) - 800978c: 687b ldr r3, [r7, #4] - 800978e: 681b ldr r3, [r3, #0] - 8009790: 691b ldr r3, [r3, #16] - 8009792: 2204 movs r2, #4 - 8009794: 4013 ands r3, r2 - 8009796: 2b04 cmp r3, #4 - 8009798: d125 bne.n 80097e6 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) - 800979a: 687b ldr r3, [r7, #4] - 800979c: 681b ldr r3, [r3, #0] - 800979e: 68db ldr r3, [r3, #12] - 80097a0: 2204 movs r2, #4 - 80097a2: 4013 ands r3, r2 - 80097a4: 2b04 cmp r3, #4 - 80097a6: d11e bne.n 80097e6 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); - 80097a8: 687b ldr r3, [r7, #4] - 80097aa: 681b ldr r3, [r3, #0] - 80097ac: 2205 movs r2, #5 - 80097ae: 4252 negs r2, r2 - 80097b0: 611a str r2, [r3, #16] - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; - 80097b2: 687b ldr r3, [r7, #4] - 80097b4: 2202 movs r2, #2 - 80097b6: 771a strb r2, [r3, #28] - /* Input capture event */ - if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) - 80097b8: 687b ldr r3, [r7, #4] - 80097ba: 681b ldr r3, [r3, #0] - 80097bc: 699a ldr r2, [r3, #24] - 80097be: 23c0 movs r3, #192 ; 0xc0 - 80097c0: 009b lsls r3, r3, #2 - 80097c2: 4013 ands r3, r2 - 80097c4: d004 beq.n 80097d0 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->IC_CaptureCallback(htim); -#else - HAL_TIM_IC_CaptureCallback(htim); - 80097c6: 687b ldr r3, [r7, #4] - 80097c8: 0018 movs r0, r3 - 80097ca: f000 fba9 bl 8009f20 - 80097ce: e007 b.n 80097e0 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->OC_DelayElapsedCallback(htim); - htim->PWM_PulseFinishedCallback(htim); -#else - HAL_TIM_OC_DelayElapsedCallback(htim); - 80097d0: 687b ldr r3, [r7, #4] - 80097d2: 0018 movs r0, r3 - 80097d4: f000 fb9c bl 8009f10 - HAL_TIM_PWM_PulseFinishedCallback(htim); - 80097d8: 687b ldr r3, [r7, #4] - 80097da: 0018 movs r0, r3 - 80097dc: f000 fba8 bl 8009f30 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 80097e0: 687b ldr r3, [r7, #4] - 80097e2: 2200 movs r2, #0 - 80097e4: 771a strb r2, [r3, #28] - } - } - /* Capture compare 3 event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) - 80097e6: 687b ldr r3, [r7, #4] - 80097e8: 681b ldr r3, [r3, #0] - 80097ea: 691b ldr r3, [r3, #16] - 80097ec: 2208 movs r2, #8 - 80097ee: 4013 ands r3, r2 - 80097f0: 2b08 cmp r3, #8 - 80097f2: d124 bne.n 800983e - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) - 80097f4: 687b ldr r3, [r7, #4] - 80097f6: 681b ldr r3, [r3, #0] - 80097f8: 68db ldr r3, [r3, #12] - 80097fa: 2208 movs r2, #8 - 80097fc: 4013 ands r3, r2 - 80097fe: 2b08 cmp r3, #8 - 8009800: d11d bne.n 800983e - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); - 8009802: 687b ldr r3, [r7, #4] - 8009804: 681b ldr r3, [r3, #0] - 8009806: 2209 movs r2, #9 - 8009808: 4252 negs r2, r2 - 800980a: 611a str r2, [r3, #16] - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; - 800980c: 687b ldr r3, [r7, #4] - 800980e: 2204 movs r2, #4 - 8009810: 771a strb r2, [r3, #28] - /* Input capture event */ - if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) - 8009812: 687b ldr r3, [r7, #4] - 8009814: 681b ldr r3, [r3, #0] - 8009816: 69db ldr r3, [r3, #28] - 8009818: 2203 movs r2, #3 - 800981a: 4013 ands r3, r2 - 800981c: d004 beq.n 8009828 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->IC_CaptureCallback(htim); -#else - HAL_TIM_IC_CaptureCallback(htim); - 800981e: 687b ldr r3, [r7, #4] - 8009820: 0018 movs r0, r3 - 8009822: f000 fb7d bl 8009f20 - 8009826: e007 b.n 8009838 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->OC_DelayElapsedCallback(htim); - htim->PWM_PulseFinishedCallback(htim); -#else - HAL_TIM_OC_DelayElapsedCallback(htim); - 8009828: 687b ldr r3, [r7, #4] - 800982a: 0018 movs r0, r3 - 800982c: f000 fb70 bl 8009f10 - HAL_TIM_PWM_PulseFinishedCallback(htim); - 8009830: 687b ldr r3, [r7, #4] - 8009832: 0018 movs r0, r3 - 8009834: f000 fb7c bl 8009f30 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8009838: 687b ldr r3, [r7, #4] - 800983a: 2200 movs r2, #0 - 800983c: 771a strb r2, [r3, #28] - } - } - /* Capture compare 4 event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) - 800983e: 687b ldr r3, [r7, #4] - 8009840: 681b ldr r3, [r3, #0] - 8009842: 691b ldr r3, [r3, #16] - 8009844: 2210 movs r2, #16 - 8009846: 4013 ands r3, r2 - 8009848: 2b10 cmp r3, #16 - 800984a: d125 bne.n 8009898 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) - 800984c: 687b ldr r3, [r7, #4] - 800984e: 681b ldr r3, [r3, #0] - 8009850: 68db ldr r3, [r3, #12] - 8009852: 2210 movs r2, #16 - 8009854: 4013 ands r3, r2 - 8009856: 2b10 cmp r3, #16 - 8009858: d11e bne.n 8009898 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); - 800985a: 687b ldr r3, [r7, #4] - 800985c: 681b ldr r3, [r3, #0] - 800985e: 2211 movs r2, #17 - 8009860: 4252 negs r2, r2 - 8009862: 611a str r2, [r3, #16] - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; - 8009864: 687b ldr r3, [r7, #4] - 8009866: 2208 movs r2, #8 - 8009868: 771a strb r2, [r3, #28] - /* Input capture event */ - if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) - 800986a: 687b ldr r3, [r7, #4] - 800986c: 681b ldr r3, [r3, #0] - 800986e: 69da ldr r2, [r3, #28] - 8009870: 23c0 movs r3, #192 ; 0xc0 - 8009872: 009b lsls r3, r3, #2 - 8009874: 4013 ands r3, r2 - 8009876: d004 beq.n 8009882 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->IC_CaptureCallback(htim); -#else - HAL_TIM_IC_CaptureCallback(htim); - 8009878: 687b ldr r3, [r7, #4] - 800987a: 0018 movs r0, r3 - 800987c: f000 fb50 bl 8009f20 - 8009880: e007 b.n 8009892 - { -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->OC_DelayElapsedCallback(htim); - htim->PWM_PulseFinishedCallback(htim); -#else - HAL_TIM_OC_DelayElapsedCallback(htim); - 8009882: 687b ldr r3, [r7, #4] - 8009884: 0018 movs r0, r3 - 8009886: f000 fb43 bl 8009f10 - HAL_TIM_PWM_PulseFinishedCallback(htim); - 800988a: 687b ldr r3, [r7, #4] - 800988c: 0018 movs r0, r3 - 800988e: f000 fb4f bl 8009f30 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8009892: 687b ldr r3, [r7, #4] - 8009894: 2200 movs r2, #0 - 8009896: 771a strb r2, [r3, #28] - } - } - /* TIM Update event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) - 8009898: 687b ldr r3, [r7, #4] - 800989a: 681b ldr r3, [r3, #0] - 800989c: 691b ldr r3, [r3, #16] - 800989e: 2201 movs r2, #1 - 80098a0: 4013 ands r3, r2 - 80098a2: 2b01 cmp r3, #1 - 80098a4: d10f bne.n 80098c6 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) - 80098a6: 687b ldr r3, [r7, #4] - 80098a8: 681b ldr r3, [r3, #0] - 80098aa: 68db ldr r3, [r3, #12] - 80098ac: 2201 movs r2, #1 - 80098ae: 4013 ands r3, r2 - 80098b0: 2b01 cmp r3, #1 - 80098b2: d108 bne.n 80098c6 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); - 80098b4: 687b ldr r3, [r7, #4] - 80098b6: 681b ldr r3, [r3, #0] - 80098b8: 2202 movs r2, #2 - 80098ba: 4252 negs r2, r2 - 80098bc: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->PeriodElapsedCallback(htim); -#else - HAL_TIM_PeriodElapsedCallback(htim); - 80098be: 687b ldr r3, [r7, #4] - 80098c0: 0018 movs r0, r3 - 80098c2: f7f9 ff35 bl 8003730 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } - /* TIM Break input event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET) - 80098c6: 687b ldr r3, [r7, #4] - 80098c8: 681b ldr r3, [r3, #0] - 80098ca: 691b ldr r3, [r3, #16] - 80098cc: 2280 movs r2, #128 ; 0x80 - 80098ce: 4013 ands r3, r2 - 80098d0: 2b80 cmp r3, #128 ; 0x80 - 80098d2: d10f bne.n 80098f4 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) - 80098d4: 687b ldr r3, [r7, #4] - 80098d6: 681b ldr r3, [r3, #0] - 80098d8: 68db ldr r3, [r3, #12] - 80098da: 2280 movs r2, #128 ; 0x80 - 80098dc: 4013 ands r3, r2 - 80098de: 2b80 cmp r3, #128 ; 0x80 - 80098e0: d108 bne.n 80098f4 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK); - 80098e2: 687b ldr r3, [r7, #4] - 80098e4: 681b ldr r3, [r3, #0] - 80098e6: 2281 movs r2, #129 ; 0x81 - 80098e8: 4252 negs r2, r2 - 80098ea: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->BreakCallback(htim); -#else - HAL_TIMEx_BreakCallback(htim); - 80098ec: 687b ldr r3, [r7, #4] - 80098ee: 0018 movs r0, r3 - 80098f0: f001 f9f4 bl 800acdc -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } - /* TIM Break2 input event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK2) != RESET) - 80098f4: 687b ldr r3, [r7, #4] - 80098f6: 681b ldr r3, [r3, #0] - 80098f8: 691a ldr r2, [r3, #16] - 80098fa: 2380 movs r3, #128 ; 0x80 - 80098fc: 005b lsls r3, r3, #1 - 80098fe: 401a ands r2, r3 - 8009900: 2380 movs r3, #128 ; 0x80 - 8009902: 005b lsls r3, r3, #1 - 8009904: 429a cmp r2, r3 - 8009906: d10e bne.n 8009926 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) - 8009908: 687b ldr r3, [r7, #4] - 800990a: 681b ldr r3, [r3, #0] - 800990c: 68db ldr r3, [r3, #12] - 800990e: 2280 movs r2, #128 ; 0x80 - 8009910: 4013 ands r3, r2 - 8009912: 2b80 cmp r3, #128 ; 0x80 - 8009914: d107 bne.n 8009926 - { - __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2); - 8009916: 687b ldr r3, [r7, #4] - 8009918: 681b ldr r3, [r3, #0] - 800991a: 4a1c ldr r2, [pc, #112] ; (800998c ) - 800991c: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->Break2Callback(htim); -#else - HAL_TIMEx_Break2Callback(htim); - 800991e: 687b ldr r3, [r7, #4] - 8009920: 0018 movs r0, r3 - 8009922: f001 f9e3 bl 800acec -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } - /* TIM Trigger detection event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET) - 8009926: 687b ldr r3, [r7, #4] - 8009928: 681b ldr r3, [r3, #0] - 800992a: 691b ldr r3, [r3, #16] - 800992c: 2240 movs r2, #64 ; 0x40 - 800992e: 4013 ands r3, r2 - 8009930: 2b40 cmp r3, #64 ; 0x40 - 8009932: d10f bne.n 8009954 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET) - 8009934: 687b ldr r3, [r7, #4] - 8009936: 681b ldr r3, [r3, #0] - 8009938: 68db ldr r3, [r3, #12] - 800993a: 2240 movs r2, #64 ; 0x40 - 800993c: 4013 ands r3, r2 - 800993e: 2b40 cmp r3, #64 ; 0x40 - 8009940: d108 bne.n 8009954 - { - __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER); - 8009942: 687b ldr r3, [r7, #4] - 8009944: 681b ldr r3, [r3, #0] - 8009946: 2241 movs r2, #65 ; 0x41 - 8009948: 4252 negs r2, r2 - 800994a: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->TriggerCallback(htim); -#else - HAL_TIM_TriggerCallback(htim); - 800994c: 687b ldr r3, [r7, #4] - 800994e: 0018 movs r0, r3 - 8009950: f000 faf6 bl 8009f40 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } - /* TIM commutation event */ - if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET) - 8009954: 687b ldr r3, [r7, #4] - 8009956: 681b ldr r3, [r3, #0] - 8009958: 691b ldr r3, [r3, #16] - 800995a: 2220 movs r2, #32 - 800995c: 4013 ands r3, r2 - 800995e: 2b20 cmp r3, #32 - 8009960: d10f bne.n 8009982 - { - if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET) - 8009962: 687b ldr r3, [r7, #4] - 8009964: 681b ldr r3, [r3, #0] - 8009966: 68db ldr r3, [r3, #12] - 8009968: 2220 movs r2, #32 - 800996a: 4013 ands r3, r2 - 800996c: 2b20 cmp r3, #32 - 800996e: d108 bne.n 8009982 - { - __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM); - 8009970: 687b ldr r3, [r7, #4] - 8009972: 681b ldr r3, [r3, #0] - 8009974: 2221 movs r2, #33 ; 0x21 - 8009976: 4252 negs r2, r2 - 8009978: 611a str r2, [r3, #16] -#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) - htim->CommutationCallback(htim); -#else - HAL_TIMEx_CommutCallback(htim); - 800997a: 687b ldr r3, [r7, #4] - 800997c: 0018 movs r0, r3 - 800997e: f001 f9a5 bl 800accc -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - } -} - 8009982: 46c0 nop ; (mov r8, r8) - 8009984: 46bd mov sp, r7 - 8009986: b002 add sp, #8 - 8009988: bd80 pop {r7, pc} - 800998a: 46c0 nop ; (mov r8, r8) - 800998c: fffffeff .word 0xfffffeff - -08009990 : - * @arg TIM_CHANNEL_3: TIM Channel 3 selected - * @arg TIM_CHANNEL_4: TIM Channel 4 selected - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_IC_InitTypeDef *sConfig, uint32_t Channel) -{ - 8009990: b580 push {r7, lr} - 8009992: b086 sub sp, #24 - 8009994: af00 add r7, sp, #0 - 8009996: 60f8 str r0, [r7, #12] - 8009998: 60b9 str r1, [r7, #8] - 800999a: 607a str r2, [r7, #4] - HAL_StatusTypeDef status = HAL_OK; - 800999c: 2317 movs r3, #23 - 800999e: 18fb adds r3, r7, r3 - 80099a0: 2200 movs r2, #0 - 80099a2: 701a strb r2, [r3, #0] - assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection)); - assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler)); - assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter)); - - /* Process Locked */ - __HAL_LOCK(htim); - 80099a4: 68fb ldr r3, [r7, #12] - 80099a6: 223c movs r2, #60 ; 0x3c - 80099a8: 5c9b ldrb r3, [r3, r2] - 80099aa: 2b01 cmp r3, #1 - 80099ac: d101 bne.n 80099b2 - 80099ae: 2302 movs r3, #2 - 80099b0: e08c b.n 8009acc - 80099b2: 68fb ldr r3, [r7, #12] - 80099b4: 223c movs r2, #60 ; 0x3c - 80099b6: 2101 movs r1, #1 - 80099b8: 5499 strb r1, [r3, r2] - - if (Channel == TIM_CHANNEL_1) - 80099ba: 687b ldr r3, [r7, #4] - 80099bc: 2b00 cmp r3, #0 - 80099be: d11b bne.n 80099f8 - { - /* TI1 Configuration */ - TIM_TI1_SetConfig(htim->Instance, - 80099c0: 68fb ldr r3, [r7, #12] - 80099c2: 6818 ldr r0, [r3, #0] - 80099c4: 68bb ldr r3, [r7, #8] - 80099c6: 6819 ldr r1, [r3, #0] - 80099c8: 68bb ldr r3, [r7, #8] - 80099ca: 685a ldr r2, [r3, #4] - 80099cc: 68bb ldr r3, [r7, #8] - 80099ce: 68db ldr r3, [r3, #12] - 80099d0: f000 fe8e bl 800a6f0 - sConfig->ICPolarity, - sConfig->ICSelection, - sConfig->ICFilter); - - /* Reset the IC1PSC Bits */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; - 80099d4: 68fb ldr r3, [r7, #12] - 80099d6: 681b ldr r3, [r3, #0] - 80099d8: 699a ldr r2, [r3, #24] - 80099da: 68fb ldr r3, [r7, #12] - 80099dc: 681b ldr r3, [r3, #0] - 80099de: 210c movs r1, #12 - 80099e0: 438a bics r2, r1 - 80099e2: 619a str r2, [r3, #24] - - /* Set the IC1PSC value */ - htim->Instance->CCMR1 |= sConfig->ICPrescaler; - 80099e4: 68fb ldr r3, [r7, #12] - 80099e6: 681b ldr r3, [r3, #0] - 80099e8: 6999 ldr r1, [r3, #24] - 80099ea: 68bb ldr r3, [r7, #8] - 80099ec: 689a ldr r2, [r3, #8] - 80099ee: 68fb ldr r3, [r7, #12] - 80099f0: 681b ldr r3, [r3, #0] - 80099f2: 430a orrs r2, r1 - 80099f4: 619a str r2, [r3, #24] - 80099f6: e062 b.n 8009abe - } - else if (Channel == TIM_CHANNEL_2) - 80099f8: 687b ldr r3, [r7, #4] - 80099fa: 2b04 cmp r3, #4 - 80099fc: d11c bne.n 8009a38 - { - /* TI2 Configuration */ - assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - - TIM_TI2_SetConfig(htim->Instance, - 80099fe: 68fb ldr r3, [r7, #12] - 8009a00: 6818 ldr r0, [r3, #0] - 8009a02: 68bb ldr r3, [r7, #8] - 8009a04: 6819 ldr r1, [r3, #0] - 8009a06: 68bb ldr r3, [r7, #8] - 8009a08: 685a ldr r2, [r3, #4] - 8009a0a: 68bb ldr r3, [r7, #8] - 8009a0c: 68db ldr r3, [r3, #12] - 8009a0e: f000 fef5 bl 800a7fc - sConfig->ICPolarity, - sConfig->ICSelection, - sConfig->ICFilter); - - /* Reset the IC2PSC Bits */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; - 8009a12: 68fb ldr r3, [r7, #12] - 8009a14: 681b ldr r3, [r3, #0] - 8009a16: 699a ldr r2, [r3, #24] - 8009a18: 68fb ldr r3, [r7, #12] - 8009a1a: 681b ldr r3, [r3, #0] - 8009a1c: 492d ldr r1, [pc, #180] ; (8009ad4 ) - 8009a1e: 400a ands r2, r1 - 8009a20: 619a str r2, [r3, #24] - - /* Set the IC2PSC value */ - htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8U); - 8009a22: 68fb ldr r3, [r7, #12] - 8009a24: 681b ldr r3, [r3, #0] - 8009a26: 6999 ldr r1, [r3, #24] - 8009a28: 68bb ldr r3, [r7, #8] - 8009a2a: 689b ldr r3, [r3, #8] - 8009a2c: 021a lsls r2, r3, #8 - 8009a2e: 68fb ldr r3, [r7, #12] - 8009a30: 681b ldr r3, [r3, #0] - 8009a32: 430a orrs r2, r1 - 8009a34: 619a str r2, [r3, #24] - 8009a36: e042 b.n 8009abe - } - else if (Channel == TIM_CHANNEL_3) - 8009a38: 687b ldr r3, [r7, #4] - 8009a3a: 2b08 cmp r3, #8 - 8009a3c: d11b bne.n 8009a76 - { - /* TI3 Configuration */ - assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); - - TIM_TI3_SetConfig(htim->Instance, - 8009a3e: 68fb ldr r3, [r7, #12] - 8009a40: 6818 ldr r0, [r3, #0] - 8009a42: 68bb ldr r3, [r7, #8] - 8009a44: 6819 ldr r1, [r3, #0] - 8009a46: 68bb ldr r3, [r7, #8] - 8009a48: 685a ldr r2, [r3, #4] - 8009a4a: 68bb ldr r3, [r7, #8] - 8009a4c: 68db ldr r3, [r3, #12] - 8009a4e: f000 ff49 bl 800a8e4 - sConfig->ICPolarity, - sConfig->ICSelection, - sConfig->ICFilter); - - /* Reset the IC3PSC Bits */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC; - 8009a52: 68fb ldr r3, [r7, #12] - 8009a54: 681b ldr r3, [r3, #0] - 8009a56: 69da ldr r2, [r3, #28] - 8009a58: 68fb ldr r3, [r7, #12] - 8009a5a: 681b ldr r3, [r3, #0] - 8009a5c: 210c movs r1, #12 - 8009a5e: 438a bics r2, r1 - 8009a60: 61da str r2, [r3, #28] - - /* Set the IC3PSC value */ - htim->Instance->CCMR2 |= sConfig->ICPrescaler; - 8009a62: 68fb ldr r3, [r7, #12] - 8009a64: 681b ldr r3, [r3, #0] - 8009a66: 69d9 ldr r1, [r3, #28] - 8009a68: 68bb ldr r3, [r7, #8] - 8009a6a: 689a ldr r2, [r3, #8] - 8009a6c: 68fb ldr r3, [r7, #12] - 8009a6e: 681b ldr r3, [r3, #0] - 8009a70: 430a orrs r2, r1 - 8009a72: 61da str r2, [r3, #28] - 8009a74: e023 b.n 8009abe - } - else if (Channel == TIM_CHANNEL_4) - 8009a76: 687b ldr r3, [r7, #4] - 8009a78: 2b0c cmp r3, #12 - 8009a7a: d11c bne.n 8009ab6 - { - /* TI4 Configuration */ - assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); - - TIM_TI4_SetConfig(htim->Instance, - 8009a7c: 68fb ldr r3, [r7, #12] - 8009a7e: 6818 ldr r0, [r3, #0] - 8009a80: 68bb ldr r3, [r7, #8] - 8009a82: 6819 ldr r1, [r3, #0] - 8009a84: 68bb ldr r3, [r7, #8] - 8009a86: 685a ldr r2, [r3, #4] - 8009a88: 68bb ldr r3, [r7, #8] - 8009a8a: 68db ldr r3, [r3, #12] - 8009a8c: f000 ff6a bl 800a964 - sConfig->ICPolarity, - sConfig->ICSelection, - sConfig->ICFilter); - - /* Reset the IC4PSC Bits */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC; - 8009a90: 68fb ldr r3, [r7, #12] - 8009a92: 681b ldr r3, [r3, #0] - 8009a94: 69da ldr r2, [r3, #28] - 8009a96: 68fb ldr r3, [r7, #12] - 8009a98: 681b ldr r3, [r3, #0] - 8009a9a: 490e ldr r1, [pc, #56] ; (8009ad4 ) - 8009a9c: 400a ands r2, r1 - 8009a9e: 61da str r2, [r3, #28] - - /* Set the IC4PSC value */ - htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8U); - 8009aa0: 68fb ldr r3, [r7, #12] - 8009aa2: 681b ldr r3, [r3, #0] - 8009aa4: 69d9 ldr r1, [r3, #28] - 8009aa6: 68bb ldr r3, [r7, #8] - 8009aa8: 689b ldr r3, [r3, #8] - 8009aaa: 021a lsls r2, r3, #8 - 8009aac: 68fb ldr r3, [r7, #12] - 8009aae: 681b ldr r3, [r3, #0] - 8009ab0: 430a orrs r2, r1 - 8009ab2: 61da str r2, [r3, #28] - 8009ab4: e003 b.n 8009abe - } - else - { - status = HAL_ERROR; - 8009ab6: 2317 movs r3, #23 - 8009ab8: 18fb adds r3, r7, r3 - 8009aba: 2201 movs r2, #1 - 8009abc: 701a strb r2, [r3, #0] - } - - __HAL_UNLOCK(htim); - 8009abe: 68fb ldr r3, [r7, #12] - 8009ac0: 223c movs r2, #60 ; 0x3c - 8009ac2: 2100 movs r1, #0 - 8009ac4: 5499 strb r1, [r3, r2] - - return status; - 8009ac6: 2317 movs r3, #23 - 8009ac8: 18fb adds r3, r7, r3 - 8009aca: 781b ldrb r3, [r3, #0] -} - 8009acc: 0018 movs r0, r3 - 8009ace: 46bd mov sp, r7 - 8009ad0: b006 add sp, #24 - 8009ad2: bd80 pop {r7, pc} - 8009ad4: fffff3ff .word 0xfffff3ff - -08009ad8 : - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, - const TIM_OC_InitTypeDef *sConfig, - uint32_t Channel) -{ - 8009ad8: b580 push {r7, lr} - 8009ada: b086 sub sp, #24 - 8009adc: af00 add r7, sp, #0 - 8009ade: 60f8 str r0, [r7, #12] - 8009ae0: 60b9 str r1, [r7, #8] - 8009ae2: 607a str r2, [r7, #4] - HAL_StatusTypeDef status = HAL_OK; - 8009ae4: 2317 movs r3, #23 - 8009ae6: 18fb adds r3, r7, r3 - 8009ae8: 2200 movs r2, #0 - 8009aea: 701a strb r2, [r3, #0] - assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); - assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); - assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); - - /* Process Locked */ - __HAL_LOCK(htim); - 8009aec: 68fb ldr r3, [r7, #12] - 8009aee: 223c movs r2, #60 ; 0x3c - 8009af0: 5c9b ldrb r3, [r3, r2] - 8009af2: 2b01 cmp r3, #1 - 8009af4: d101 bne.n 8009afa - 8009af6: 2302 movs r3, #2 - 8009af8: e0e5 b.n 8009cc6 - 8009afa: 68fb ldr r3, [r7, #12] - 8009afc: 223c movs r2, #60 ; 0x3c - 8009afe: 2101 movs r1, #1 - 8009b00: 5499 strb r1, [r3, r2] - - switch (Channel) - 8009b02: 687b ldr r3, [r7, #4] - 8009b04: 2b14 cmp r3, #20 - 8009b06: d900 bls.n 8009b0a - 8009b08: e0d1 b.n 8009cae - 8009b0a: 687b ldr r3, [r7, #4] - 8009b0c: 009a lsls r2, r3, #2 - 8009b0e: 4b70 ldr r3, [pc, #448] ; (8009cd0 ) - 8009b10: 18d3 adds r3, r2, r3 - 8009b12: 681b ldr r3, [r3, #0] - 8009b14: 469f mov pc, r3 - { - /* Check the parameters */ - assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); - - /* Configure the Channel 1 in PWM mode */ - TIM_OC1_SetConfig(htim->Instance, sConfig); - 8009b16: 68fb ldr r3, [r7, #12] - 8009b18: 681b ldr r3, [r3, #0] - 8009b1a: 68ba ldr r2, [r7, #8] - 8009b1c: 0011 movs r1, r2 - 8009b1e: 0018 movs r0, r3 - 8009b20: f000 fa8c bl 800a03c - - /* Set the Preload enable bit for channel1 */ - htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; - 8009b24: 68fb ldr r3, [r7, #12] - 8009b26: 681b ldr r3, [r3, #0] - 8009b28: 699a ldr r2, [r3, #24] - 8009b2a: 68fb ldr r3, [r7, #12] - 8009b2c: 681b ldr r3, [r3, #0] - 8009b2e: 2108 movs r1, #8 - 8009b30: 430a orrs r2, r1 - 8009b32: 619a str r2, [r3, #24] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; - 8009b34: 68fb ldr r3, [r7, #12] - 8009b36: 681b ldr r3, [r3, #0] - 8009b38: 699a ldr r2, [r3, #24] - 8009b3a: 68fb ldr r3, [r7, #12] - 8009b3c: 681b ldr r3, [r3, #0] - 8009b3e: 2104 movs r1, #4 - 8009b40: 438a bics r2, r1 - 8009b42: 619a str r2, [r3, #24] - htim->Instance->CCMR1 |= sConfig->OCFastMode; - 8009b44: 68fb ldr r3, [r7, #12] - 8009b46: 681b ldr r3, [r3, #0] - 8009b48: 6999 ldr r1, [r3, #24] - 8009b4a: 68bb ldr r3, [r7, #8] - 8009b4c: 691a ldr r2, [r3, #16] - 8009b4e: 68fb ldr r3, [r7, #12] - 8009b50: 681b ldr r3, [r3, #0] - 8009b52: 430a orrs r2, r1 - 8009b54: 619a str r2, [r3, #24] - break; - 8009b56: e0af b.n 8009cb8 - { - /* Check the parameters */ - assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - - /* Configure the Channel 2 in PWM mode */ - TIM_OC2_SetConfig(htim->Instance, sConfig); - 8009b58: 68fb ldr r3, [r7, #12] - 8009b5a: 681b ldr r3, [r3, #0] - 8009b5c: 68ba ldr r2, [r7, #8] - 8009b5e: 0011 movs r1, r2 - 8009b60: 0018 movs r0, r3 - 8009b62: f000 faf5 bl 800a150 - - /* Set the Preload enable bit for channel2 */ - htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; - 8009b66: 68fb ldr r3, [r7, #12] - 8009b68: 681b ldr r3, [r3, #0] - 8009b6a: 699a ldr r2, [r3, #24] - 8009b6c: 68fb ldr r3, [r7, #12] - 8009b6e: 681b ldr r3, [r3, #0] - 8009b70: 2180 movs r1, #128 ; 0x80 - 8009b72: 0109 lsls r1, r1, #4 - 8009b74: 430a orrs r2, r1 - 8009b76: 619a str r2, [r3, #24] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; - 8009b78: 68fb ldr r3, [r7, #12] - 8009b7a: 681b ldr r3, [r3, #0] - 8009b7c: 699a ldr r2, [r3, #24] - 8009b7e: 68fb ldr r3, [r7, #12] - 8009b80: 681b ldr r3, [r3, #0] - 8009b82: 4954 ldr r1, [pc, #336] ; (8009cd4 ) - 8009b84: 400a ands r2, r1 - 8009b86: 619a str r2, [r3, #24] - htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; - 8009b88: 68fb ldr r3, [r7, #12] - 8009b8a: 681b ldr r3, [r3, #0] - 8009b8c: 6999 ldr r1, [r3, #24] - 8009b8e: 68bb ldr r3, [r7, #8] - 8009b90: 691b ldr r3, [r3, #16] - 8009b92: 021a lsls r2, r3, #8 - 8009b94: 68fb ldr r3, [r7, #12] - 8009b96: 681b ldr r3, [r3, #0] - 8009b98: 430a orrs r2, r1 - 8009b9a: 619a str r2, [r3, #24] - break; - 8009b9c: e08c b.n 8009cb8 - { - /* Check the parameters */ - assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); - - /* Configure the Channel 3 in PWM mode */ - TIM_OC3_SetConfig(htim->Instance, sConfig); - 8009b9e: 68fb ldr r3, [r7, #12] - 8009ba0: 681b ldr r3, [r3, #0] - 8009ba2: 68ba ldr r2, [r7, #8] - 8009ba4: 0011 movs r1, r2 - 8009ba6: 0018 movs r0, r3 - 8009ba8: f000 fb56 bl 800a258 - - /* Set the Preload enable bit for channel3 */ - htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; - 8009bac: 68fb ldr r3, [r7, #12] - 8009bae: 681b ldr r3, [r3, #0] - 8009bb0: 69da ldr r2, [r3, #28] - 8009bb2: 68fb ldr r3, [r7, #12] - 8009bb4: 681b ldr r3, [r3, #0] - 8009bb6: 2108 movs r1, #8 - 8009bb8: 430a orrs r2, r1 - 8009bba: 61da str r2, [r3, #28] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; - 8009bbc: 68fb ldr r3, [r7, #12] - 8009bbe: 681b ldr r3, [r3, #0] - 8009bc0: 69da ldr r2, [r3, #28] - 8009bc2: 68fb ldr r3, [r7, #12] - 8009bc4: 681b ldr r3, [r3, #0] - 8009bc6: 2104 movs r1, #4 - 8009bc8: 438a bics r2, r1 - 8009bca: 61da str r2, [r3, #28] - htim->Instance->CCMR2 |= sConfig->OCFastMode; - 8009bcc: 68fb ldr r3, [r7, #12] - 8009bce: 681b ldr r3, [r3, #0] - 8009bd0: 69d9 ldr r1, [r3, #28] - 8009bd2: 68bb ldr r3, [r7, #8] - 8009bd4: 691a ldr r2, [r3, #16] - 8009bd6: 68fb ldr r3, [r7, #12] - 8009bd8: 681b ldr r3, [r3, #0] - 8009bda: 430a orrs r2, r1 - 8009bdc: 61da str r2, [r3, #28] - break; - 8009bde: e06b b.n 8009cb8 - { - /* Check the parameters */ - assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); - - /* Configure the Channel 4 in PWM mode */ - TIM_OC4_SetConfig(htim->Instance, sConfig); - 8009be0: 68fb ldr r3, [r7, #12] - 8009be2: 681b ldr r3, [r3, #0] - 8009be4: 68ba ldr r2, [r7, #8] - 8009be6: 0011 movs r1, r2 - 8009be8: 0018 movs r0, r3 - 8009bea: f000 fbbd bl 800a368 - - /* Set the Preload enable bit for channel4 */ - htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; - 8009bee: 68fb ldr r3, [r7, #12] - 8009bf0: 681b ldr r3, [r3, #0] - 8009bf2: 69da ldr r2, [r3, #28] - 8009bf4: 68fb ldr r3, [r7, #12] - 8009bf6: 681b ldr r3, [r3, #0] - 8009bf8: 2180 movs r1, #128 ; 0x80 - 8009bfa: 0109 lsls r1, r1, #4 - 8009bfc: 430a orrs r2, r1 - 8009bfe: 61da str r2, [r3, #28] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; - 8009c00: 68fb ldr r3, [r7, #12] - 8009c02: 681b ldr r3, [r3, #0] - 8009c04: 69da ldr r2, [r3, #28] - 8009c06: 68fb ldr r3, [r7, #12] - 8009c08: 681b ldr r3, [r3, #0] - 8009c0a: 4932 ldr r1, [pc, #200] ; (8009cd4 ) - 8009c0c: 400a ands r2, r1 - 8009c0e: 61da str r2, [r3, #28] - htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; - 8009c10: 68fb ldr r3, [r7, #12] - 8009c12: 681b ldr r3, [r3, #0] - 8009c14: 69d9 ldr r1, [r3, #28] - 8009c16: 68bb ldr r3, [r7, #8] - 8009c18: 691b ldr r3, [r3, #16] - 8009c1a: 021a lsls r2, r3, #8 - 8009c1c: 68fb ldr r3, [r7, #12] - 8009c1e: 681b ldr r3, [r3, #0] - 8009c20: 430a orrs r2, r1 - 8009c22: 61da str r2, [r3, #28] - break; - 8009c24: e048 b.n 8009cb8 - { - /* Check the parameters */ - assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); - - /* Configure the Channel 5 in PWM mode */ - TIM_OC5_SetConfig(htim->Instance, sConfig); - 8009c26: 68fb ldr r3, [r7, #12] - 8009c28: 681b ldr r3, [r3, #0] - 8009c2a: 68ba ldr r2, [r7, #8] - 8009c2c: 0011 movs r1, r2 - 8009c2e: 0018 movs r0, r3 - 8009c30: f000 fc04 bl 800a43c - - /* Set the Preload enable bit for channel5*/ - htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE; - 8009c34: 68fb ldr r3, [r7, #12] - 8009c36: 681b ldr r3, [r3, #0] - 8009c38: 6d5a ldr r2, [r3, #84] ; 0x54 - 8009c3a: 68fb ldr r3, [r7, #12] - 8009c3c: 681b ldr r3, [r3, #0] - 8009c3e: 2108 movs r1, #8 - 8009c40: 430a orrs r2, r1 - 8009c42: 655a str r2, [r3, #84] ; 0x54 - - /* Configure the Output Fast mode */ - htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE; - 8009c44: 68fb ldr r3, [r7, #12] - 8009c46: 681b ldr r3, [r3, #0] - 8009c48: 6d5a ldr r2, [r3, #84] ; 0x54 - 8009c4a: 68fb ldr r3, [r7, #12] - 8009c4c: 681b ldr r3, [r3, #0] - 8009c4e: 2104 movs r1, #4 - 8009c50: 438a bics r2, r1 - 8009c52: 655a str r2, [r3, #84] ; 0x54 - htim->Instance->CCMR3 |= sConfig->OCFastMode; - 8009c54: 68fb ldr r3, [r7, #12] - 8009c56: 681b ldr r3, [r3, #0] - 8009c58: 6d59 ldr r1, [r3, #84] ; 0x54 - 8009c5a: 68bb ldr r3, [r7, #8] - 8009c5c: 691a ldr r2, [r3, #16] - 8009c5e: 68fb ldr r3, [r7, #12] - 8009c60: 681b ldr r3, [r3, #0] - 8009c62: 430a orrs r2, r1 - 8009c64: 655a str r2, [r3, #84] ; 0x54 - break; - 8009c66: e027 b.n 8009cb8 - { - /* Check the parameters */ - assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); - - /* Configure the Channel 6 in PWM mode */ - TIM_OC6_SetConfig(htim->Instance, sConfig); - 8009c68: 68fb ldr r3, [r7, #12] - 8009c6a: 681b ldr r3, [r3, #0] - 8009c6c: 68ba ldr r2, [r7, #8] - 8009c6e: 0011 movs r1, r2 - 8009c70: 0018 movs r0, r3 - 8009c72: f000 fc43 bl 800a4fc - - /* Set the Preload enable bit for channel6 */ - htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE; - 8009c76: 68fb ldr r3, [r7, #12] - 8009c78: 681b ldr r3, [r3, #0] - 8009c7a: 6d5a ldr r2, [r3, #84] ; 0x54 - 8009c7c: 68fb ldr r3, [r7, #12] - 8009c7e: 681b ldr r3, [r3, #0] - 8009c80: 2180 movs r1, #128 ; 0x80 - 8009c82: 0109 lsls r1, r1, #4 - 8009c84: 430a orrs r2, r1 - 8009c86: 655a str r2, [r3, #84] ; 0x54 - - /* Configure the Output Fast mode */ - htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE; - 8009c88: 68fb ldr r3, [r7, #12] - 8009c8a: 681b ldr r3, [r3, #0] - 8009c8c: 6d5a ldr r2, [r3, #84] ; 0x54 - 8009c8e: 68fb ldr r3, [r7, #12] - 8009c90: 681b ldr r3, [r3, #0] - 8009c92: 4910 ldr r1, [pc, #64] ; (8009cd4 ) - 8009c94: 400a ands r2, r1 - 8009c96: 655a str r2, [r3, #84] ; 0x54 - htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; - 8009c98: 68fb ldr r3, [r7, #12] - 8009c9a: 681b ldr r3, [r3, #0] - 8009c9c: 6d59 ldr r1, [r3, #84] ; 0x54 - 8009c9e: 68bb ldr r3, [r7, #8] - 8009ca0: 691b ldr r3, [r3, #16] - 8009ca2: 021a lsls r2, r3, #8 - 8009ca4: 68fb ldr r3, [r7, #12] - 8009ca6: 681b ldr r3, [r3, #0] - 8009ca8: 430a orrs r2, r1 - 8009caa: 655a str r2, [r3, #84] ; 0x54 - break; - 8009cac: e004 b.n 8009cb8 - } - - default: - status = HAL_ERROR; - 8009cae: 2317 movs r3, #23 - 8009cb0: 18fb adds r3, r7, r3 - 8009cb2: 2201 movs r2, #1 - 8009cb4: 701a strb r2, [r3, #0] - break; - 8009cb6: 46c0 nop ; (mov r8, r8) - } - - __HAL_UNLOCK(htim); - 8009cb8: 68fb ldr r3, [r7, #12] - 8009cba: 223c movs r2, #60 ; 0x3c - 8009cbc: 2100 movs r1, #0 - 8009cbe: 5499 strb r1, [r3, r2] - - return status; - 8009cc0: 2317 movs r3, #23 - 8009cc2: 18fb adds r3, r7, r3 - 8009cc4: 781b ldrb r3, [r3, #0] -} - 8009cc6: 0018 movs r0, r3 - 8009cc8: 46bd mov sp, r7 - 8009cca: b006 add sp, #24 - 8009ccc: bd80 pop {r7, pc} - 8009cce: 46c0 nop ; (mov r8, r8) - 8009cd0: 08010ee0 .word 0x08010ee0 - 8009cd4: fffffbff .word 0xfffffbff - -08009cd8 : - * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that - * contains the clock source information for the TIM peripheral. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) -{ - 8009cd8: b580 push {r7, lr} - 8009cda: b084 sub sp, #16 - 8009cdc: af00 add r7, sp, #0 - 8009cde: 6078 str r0, [r7, #4] - 8009ce0: 6039 str r1, [r7, #0] - HAL_StatusTypeDef status = HAL_OK; - 8009ce2: 230f movs r3, #15 - 8009ce4: 18fb adds r3, r7, r3 - 8009ce6: 2200 movs r2, #0 - 8009ce8: 701a strb r2, [r3, #0] - uint32_t tmpsmcr; - - /* Process Locked */ - __HAL_LOCK(htim); - 8009cea: 687b ldr r3, [r7, #4] - 8009cec: 223c movs r2, #60 ; 0x3c - 8009cee: 5c9b ldrb r3, [r3, r2] - 8009cf0: 2b01 cmp r3, #1 - 8009cf2: d101 bne.n 8009cf8 - 8009cf4: 2302 movs r3, #2 - 8009cf6: e0bc b.n 8009e72 - 8009cf8: 687b ldr r3, [r7, #4] - 8009cfa: 223c movs r2, #60 ; 0x3c - 8009cfc: 2101 movs r1, #1 - 8009cfe: 5499 strb r1, [r3, r2] - - htim->State = HAL_TIM_STATE_BUSY; - 8009d00: 687b ldr r3, [r7, #4] - 8009d02: 223d movs r2, #61 ; 0x3d - 8009d04: 2102 movs r1, #2 - 8009d06: 5499 strb r1, [r3, r2] - - /* Check the parameters */ - assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); - - /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ - tmpsmcr = htim->Instance->SMCR; - 8009d08: 687b ldr r3, [r7, #4] - 8009d0a: 681b ldr r3, [r3, #0] - 8009d0c: 689b ldr r3, [r3, #8] - 8009d0e: 60bb str r3, [r7, #8] - tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8009d10: 68bb ldr r3, [r7, #8] - 8009d12: 4a5a ldr r2, [pc, #360] ; (8009e7c ) - 8009d14: 4013 ands r3, r2 - 8009d16: 60bb str r3, [r7, #8] - tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8009d18: 68bb ldr r3, [r7, #8] - 8009d1a: 4a59 ldr r2, [pc, #356] ; (8009e80 ) - 8009d1c: 4013 ands r3, r2 - 8009d1e: 60bb str r3, [r7, #8] - htim->Instance->SMCR = tmpsmcr; - 8009d20: 687b ldr r3, [r7, #4] - 8009d22: 681b ldr r3, [r3, #0] - 8009d24: 68ba ldr r2, [r7, #8] - 8009d26: 609a str r2, [r3, #8] - - switch (sClockSourceConfig->ClockSource) - 8009d28: 683b ldr r3, [r7, #0] - 8009d2a: 681b ldr r3, [r3, #0] - 8009d2c: 2280 movs r2, #128 ; 0x80 - 8009d2e: 0192 lsls r2, r2, #6 - 8009d30: 4293 cmp r3, r2 - 8009d32: d040 beq.n 8009db6 - 8009d34: 2280 movs r2, #128 ; 0x80 - 8009d36: 0192 lsls r2, r2, #6 - 8009d38: 4293 cmp r3, r2 - 8009d3a: d900 bls.n 8009d3e - 8009d3c: e088 b.n 8009e50 - 8009d3e: 2280 movs r2, #128 ; 0x80 - 8009d40: 0152 lsls r2, r2, #5 - 8009d42: 4293 cmp r3, r2 - 8009d44: d100 bne.n 8009d48 - 8009d46: e088 b.n 8009e5a - 8009d48: 2280 movs r2, #128 ; 0x80 - 8009d4a: 0152 lsls r2, r2, #5 - 8009d4c: 4293 cmp r3, r2 - 8009d4e: d900 bls.n 8009d52 - 8009d50: e07e b.n 8009e50 - 8009d52: 2b70 cmp r3, #112 ; 0x70 - 8009d54: d018 beq.n 8009d88 - 8009d56: d900 bls.n 8009d5a - 8009d58: e07a b.n 8009e50 - 8009d5a: 2b60 cmp r3, #96 ; 0x60 - 8009d5c: d04f beq.n 8009dfe - 8009d5e: d900 bls.n 8009d62 - 8009d60: e076 b.n 8009e50 - 8009d62: 2b50 cmp r3, #80 ; 0x50 - 8009d64: d03b beq.n 8009dde - 8009d66: d900 bls.n 8009d6a - 8009d68: e072 b.n 8009e50 - 8009d6a: 2b40 cmp r3, #64 ; 0x40 - 8009d6c: d057 beq.n 8009e1e - 8009d6e: d900 bls.n 8009d72 - 8009d70: e06e b.n 8009e50 - 8009d72: 2b30 cmp r3, #48 ; 0x30 - 8009d74: d063 beq.n 8009e3e - 8009d76: d86b bhi.n 8009e50 - 8009d78: 2b20 cmp r3, #32 - 8009d7a: d060 beq.n 8009e3e - 8009d7c: d868 bhi.n 8009e50 - 8009d7e: 2b00 cmp r3, #0 - 8009d80: d05d beq.n 8009e3e - 8009d82: 2b10 cmp r3, #16 - 8009d84: d05b beq.n 8009e3e - 8009d86: e063 b.n 8009e50 - assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - /* Configure the ETR Clock source */ - TIM_ETR_SetConfig(htim->Instance, - 8009d88: 687b ldr r3, [r7, #4] - 8009d8a: 6818 ldr r0, [r3, #0] - 8009d8c: 683b ldr r3, [r7, #0] - 8009d8e: 6899 ldr r1, [r3, #8] - 8009d90: 683b ldr r3, [r7, #0] - 8009d92: 685a ldr r2, [r3, #4] - 8009d94: 683b ldr r3, [r7, #0] - 8009d96: 68db ldr r3, [r3, #12] - 8009d98: f000 fe46 bl 800aa28 - sClockSourceConfig->ClockPrescaler, - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - - /* Select the External clock mode1 and the ETRF trigger */ - tmpsmcr = htim->Instance->SMCR; - 8009d9c: 687b ldr r3, [r7, #4] - 8009d9e: 681b ldr r3, [r3, #0] - 8009da0: 689b ldr r3, [r3, #8] - 8009da2: 60bb str r3, [r7, #8] - tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 8009da4: 68bb ldr r3, [r7, #8] - 8009da6: 2277 movs r2, #119 ; 0x77 - 8009da8: 4313 orrs r3, r2 - 8009daa: 60bb str r3, [r7, #8] - /* Write to TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 8009dac: 687b ldr r3, [r7, #4] - 8009dae: 681b ldr r3, [r3, #0] - 8009db0: 68ba ldr r2, [r7, #8] - 8009db2: 609a str r2, [r3, #8] - break; - 8009db4: e052 b.n 8009e5c - assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - /* Configure the ETR Clock source */ - TIM_ETR_SetConfig(htim->Instance, - 8009db6: 687b ldr r3, [r7, #4] - 8009db8: 6818 ldr r0, [r3, #0] - 8009dba: 683b ldr r3, [r7, #0] - 8009dbc: 6899 ldr r1, [r3, #8] - 8009dbe: 683b ldr r3, [r7, #0] - 8009dc0: 685a ldr r2, [r3, #4] - 8009dc2: 683b ldr r3, [r7, #0] - 8009dc4: 68db ldr r3, [r3, #12] - 8009dc6: f000 fe2f bl 800aa28 - sClockSourceConfig->ClockPrescaler, - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - /* Enable the External clock mode2 */ - htim->Instance->SMCR |= TIM_SMCR_ECE; - 8009dca: 687b ldr r3, [r7, #4] - 8009dcc: 681b ldr r3, [r3, #0] - 8009dce: 689a ldr r2, [r3, #8] - 8009dd0: 687b ldr r3, [r7, #4] - 8009dd2: 681b ldr r3, [r3, #0] - 8009dd4: 2180 movs r1, #128 ; 0x80 - 8009dd6: 01c9 lsls r1, r1, #7 - 8009dd8: 430a orrs r2, r1 - 8009dda: 609a str r2, [r3, #8] - break; - 8009ddc: e03e b.n 8009e5c - - /* Check TI1 input conditioning related parameters */ - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - TIM_TI1_ConfigInputStage(htim->Instance, - 8009dde: 687b ldr r3, [r7, #4] - 8009de0: 6818 ldr r0, [r3, #0] - 8009de2: 683b ldr r3, [r7, #0] - 8009de4: 6859 ldr r1, [r3, #4] - 8009de6: 683b ldr r3, [r7, #0] - 8009de8: 68db ldr r3, [r3, #12] - 8009dea: 001a movs r2, r3 - 8009dec: f000 fcd8 bl 800a7a0 - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); - 8009df0: 687b ldr r3, [r7, #4] - 8009df2: 681b ldr r3, [r3, #0] - 8009df4: 2150 movs r1, #80 ; 0x50 - 8009df6: 0018 movs r0, r3 - 8009df8: f000 fdfa bl 800a9f0 - break; - 8009dfc: e02e b.n 8009e5c - - /* Check TI2 input conditioning related parameters */ - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - TIM_TI2_ConfigInputStage(htim->Instance, - 8009dfe: 687b ldr r3, [r7, #4] - 8009e00: 6818 ldr r0, [r3, #0] - 8009e02: 683b ldr r3, [r7, #0] - 8009e04: 6859 ldr r1, [r3, #4] - 8009e06: 683b ldr r3, [r7, #0] - 8009e08: 68db ldr r3, [r3, #12] - 8009e0a: 001a movs r2, r3 - 8009e0c: f000 fd38 bl 800a880 - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 8009e10: 687b ldr r3, [r7, #4] - 8009e12: 681b ldr r3, [r3, #0] - 8009e14: 2160 movs r1, #96 ; 0x60 - 8009e16: 0018 movs r0, r3 - 8009e18: f000 fdea bl 800a9f0 - break; - 8009e1c: e01e b.n 8009e5c - - /* Check TI1 input conditioning related parameters */ - assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); - assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); - - TIM_TI1_ConfigInputStage(htim->Instance, - 8009e1e: 687b ldr r3, [r7, #4] - 8009e20: 6818 ldr r0, [r3, #0] - 8009e22: 683b ldr r3, [r7, #0] - 8009e24: 6859 ldr r1, [r3, #4] - 8009e26: 683b ldr r3, [r7, #0] - 8009e28: 68db ldr r3, [r3, #12] - 8009e2a: 001a movs r2, r3 - 8009e2c: f000 fcb8 bl 800a7a0 - sClockSourceConfig->ClockPolarity, - sClockSourceConfig->ClockFilter); - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 8009e30: 687b ldr r3, [r7, #4] - 8009e32: 681b ldr r3, [r3, #0] - 8009e34: 2140 movs r1, #64 ; 0x40 - 8009e36: 0018 movs r0, r3 - 8009e38: f000 fdda bl 800a9f0 - break; - 8009e3c: e00e b.n 8009e5c - case TIM_CLOCKSOURCE_ITR3: - { - /* Check whether or not the timer instance supports internal trigger input */ - assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); - - TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); - 8009e3e: 687b ldr r3, [r7, #4] - 8009e40: 681a ldr r2, [r3, #0] - 8009e42: 683b ldr r3, [r7, #0] - 8009e44: 681b ldr r3, [r3, #0] - 8009e46: 0019 movs r1, r3 - 8009e48: 0010 movs r0, r2 - 8009e4a: f000 fdd1 bl 800a9f0 - break; - 8009e4e: e005 b.n 8009e5c - } - - default: - status = HAL_ERROR; - 8009e50: 230f movs r3, #15 - 8009e52: 18fb adds r3, r7, r3 - 8009e54: 2201 movs r2, #1 - 8009e56: 701a strb r2, [r3, #0] - break; - 8009e58: e000 b.n 8009e5c - break; - 8009e5a: 46c0 nop ; (mov r8, r8) - } - htim->State = HAL_TIM_STATE_READY; - 8009e5c: 687b ldr r3, [r7, #4] - 8009e5e: 223d movs r2, #61 ; 0x3d - 8009e60: 2101 movs r1, #1 - 8009e62: 5499 strb r1, [r3, r2] - - __HAL_UNLOCK(htim); - 8009e64: 687b ldr r3, [r7, #4] - 8009e66: 223c movs r2, #60 ; 0x3c - 8009e68: 2100 movs r1, #0 - 8009e6a: 5499 strb r1, [r3, r2] - - return status; - 8009e6c: 230f movs r3, #15 - 8009e6e: 18fb adds r3, r7, r3 - 8009e70: 781b ldrb r3, [r3, #0] -} - 8009e72: 0018 movs r0, r3 - 8009e74: 46bd mov sp, r7 - 8009e76: b004 add sp, #16 - 8009e78: bd80 pop {r7, pc} - 8009e7a: 46c0 nop ; (mov r8, r8) - 8009e7c: ffceff88 .word 0xffceff88 - 8009e80: ffff00ff .word 0xffff00ff - -08009e84 : - * timer input or external trigger input) and the Slave mode - * (Disable, Reset, Gated, Trigger, External clock mode 1). - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig) -{ - 8009e84: b580 push {r7, lr} - 8009e86: b082 sub sp, #8 - 8009e88: af00 add r7, sp, #0 - 8009e8a: 6078 str r0, [r7, #4] - 8009e8c: 6039 str r1, [r7, #0] - /* Check the parameters */ - assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance)); - assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); - assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); - - __HAL_LOCK(htim); - 8009e8e: 687b ldr r3, [r7, #4] - 8009e90: 223c movs r2, #60 ; 0x3c - 8009e92: 5c9b ldrb r3, [r3, r2] - 8009e94: 2b01 cmp r3, #1 - 8009e96: d101 bne.n 8009e9c - 8009e98: 2302 movs r3, #2 - 8009e9a: e032 b.n 8009f02 - 8009e9c: 687b ldr r3, [r7, #4] - 8009e9e: 223c movs r2, #60 ; 0x3c - 8009ea0: 2101 movs r1, #1 - 8009ea2: 5499 strb r1, [r3, r2] - - htim->State = HAL_TIM_STATE_BUSY; - 8009ea4: 687b ldr r3, [r7, #4] - 8009ea6: 223d movs r2, #61 ; 0x3d - 8009ea8: 2102 movs r1, #2 - 8009eaa: 5499 strb r1, [r3, r2] - - if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) - 8009eac: 683a ldr r2, [r7, #0] - 8009eae: 687b ldr r3, [r7, #4] - 8009eb0: 0011 movs r1, r2 - 8009eb2: 0018 movs r0, r3 - 8009eb4: f000 fb86 bl 800a5c4 - 8009eb8: 1e03 subs r3, r0, #0 - 8009eba: d009 beq.n 8009ed0 - { - htim->State = HAL_TIM_STATE_READY; - 8009ebc: 687b ldr r3, [r7, #4] - 8009ebe: 223d movs r2, #61 ; 0x3d - 8009ec0: 2101 movs r1, #1 - 8009ec2: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(htim); - 8009ec4: 687b ldr r3, [r7, #4] - 8009ec6: 223c movs r2, #60 ; 0x3c - 8009ec8: 2100 movs r1, #0 - 8009eca: 5499 strb r1, [r3, r2] - return HAL_ERROR; - 8009ecc: 2301 movs r3, #1 - 8009ece: e018 b.n 8009f02 - } - - /* Disable Trigger Interrupt */ - __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER); - 8009ed0: 687b ldr r3, [r7, #4] - 8009ed2: 681b ldr r3, [r3, #0] - 8009ed4: 68da ldr r2, [r3, #12] - 8009ed6: 687b ldr r3, [r7, #4] - 8009ed8: 681b ldr r3, [r3, #0] - 8009eda: 2140 movs r1, #64 ; 0x40 - 8009edc: 438a bics r2, r1 - 8009ede: 60da str r2, [r3, #12] - - /* Disable Trigger DMA request */ - __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); - 8009ee0: 687b ldr r3, [r7, #4] - 8009ee2: 681b ldr r3, [r3, #0] - 8009ee4: 68da ldr r2, [r3, #12] - 8009ee6: 687b ldr r3, [r7, #4] - 8009ee8: 681b ldr r3, [r3, #0] - 8009eea: 4908 ldr r1, [pc, #32] ; (8009f0c ) - 8009eec: 400a ands r2, r1 - 8009eee: 60da str r2, [r3, #12] - - htim->State = HAL_TIM_STATE_READY; - 8009ef0: 687b ldr r3, [r7, #4] - 8009ef2: 223d movs r2, #61 ; 0x3d - 8009ef4: 2101 movs r1, #1 - 8009ef6: 5499 strb r1, [r3, r2] - - __HAL_UNLOCK(htim); - 8009ef8: 687b ldr r3, [r7, #4] - 8009efa: 223c movs r2, #60 ; 0x3c - 8009efc: 2100 movs r1, #0 - 8009efe: 5499 strb r1, [r3, r2] - - return HAL_OK; - 8009f00: 2300 movs r3, #0 -} - 8009f02: 0018 movs r0, r3 - 8009f04: 46bd mov sp, r7 - 8009f06: b002 add sp, #8 - 8009f08: bd80 pop {r7, pc} - 8009f0a: 46c0 nop ; (mov r8, r8) - 8009f0c: ffffbfff .word 0xffffbfff - -08009f10 : - * @brief Output Compare callback in non-blocking mode - * @param htim TIM OC handle - * @retval None - */ -__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) -{ - 8009f10: b580 push {r7, lr} - 8009f12: b082 sub sp, #8 - 8009f14: af00 add r7, sp, #0 - 8009f16: 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 - */ -} - 8009f18: 46c0 nop ; (mov r8, r8) - 8009f1a: 46bd mov sp, r7 - 8009f1c: b002 add sp, #8 - 8009f1e: bd80 pop {r7, pc} - -08009f20 : - * @brief Input Capture callback in non-blocking mode - * @param htim TIM IC handle - * @retval None - */ -__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) -{ - 8009f20: b580 push {r7, lr} - 8009f22: b082 sub sp, #8 - 8009f24: af00 add r7, sp, #0 - 8009f26: 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 - */ -} - 8009f28: 46c0 nop ; (mov r8, r8) - 8009f2a: 46bd mov sp, r7 - 8009f2c: b002 add sp, #8 - 8009f2e: bd80 pop {r7, pc} - -08009f30 : - * @brief PWM Pulse finished callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) -{ - 8009f30: b580 push {r7, lr} - 8009f32: b082 sub sp, #8 - 8009f34: af00 add r7, sp, #0 - 8009f36: 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 - */ -} - 8009f38: 46c0 nop ; (mov r8, r8) - 8009f3a: 46bd mov sp, r7 - 8009f3c: b002 add sp, #8 - 8009f3e: bd80 pop {r7, pc} - -08009f40 : - * @brief Hall Trigger detection callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) -{ - 8009f40: b580 push {r7, lr} - 8009f42: b082 sub sp, #8 - 8009f44: af00 add r7, sp, #0 - 8009f46: 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 - */ -} - 8009f48: 46c0 nop ; (mov r8, r8) - 8009f4a: 46bd mov sp, r7 - 8009f4c: b002 add sp, #8 - 8009f4e: bd80 pop {r7, pc} - -08009f50 : - * @param TIMx TIM peripheral - * @param Structure TIM Base configuration structure - * @retval None - */ -void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) -{ - 8009f50: b580 push {r7, lr} - 8009f52: b084 sub sp, #16 - 8009f54: af00 add r7, sp, #0 - 8009f56: 6078 str r0, [r7, #4] - 8009f58: 6039 str r1, [r7, #0] - uint32_t tmpcr1; - tmpcr1 = TIMx->CR1; - 8009f5a: 687b ldr r3, [r7, #4] - 8009f5c: 681b ldr r3, [r3, #0] - 8009f5e: 60fb str r3, [r7, #12] - - /* Set TIM Time Base Unit parameters ---------------------------------------*/ - if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 8009f60: 687b ldr r3, [r7, #4] - 8009f62: 4a2f ldr r2, [pc, #188] ; (800a020 ) - 8009f64: 4293 cmp r3, r2 - 8009f66: d003 beq.n 8009f70 - 8009f68: 687b ldr r3, [r7, #4] - 8009f6a: 4a2e ldr r2, [pc, #184] ; (800a024 ) - 8009f6c: 4293 cmp r3, r2 - 8009f6e: d108 bne.n 8009f82 - { - /* Select the Counter Mode */ - tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 8009f70: 68fb ldr r3, [r7, #12] - 8009f72: 2270 movs r2, #112 ; 0x70 - 8009f74: 4393 bics r3, r2 - 8009f76: 60fb str r3, [r7, #12] - tmpcr1 |= Structure->CounterMode; - 8009f78: 683b ldr r3, [r7, #0] - 8009f7a: 685b ldr r3, [r3, #4] - 8009f7c: 68fa ldr r2, [r7, #12] - 8009f7e: 4313 orrs r3, r2 - 8009f80: 60fb str r3, [r7, #12] - } - - if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 8009f82: 687b ldr r3, [r7, #4] - 8009f84: 4a26 ldr r2, [pc, #152] ; (800a020 ) - 8009f86: 4293 cmp r3, r2 - 8009f88: d013 beq.n 8009fb2 - 8009f8a: 687b ldr r3, [r7, #4] - 8009f8c: 4a25 ldr r2, [pc, #148] ; (800a024 ) - 8009f8e: 4293 cmp r3, r2 - 8009f90: d00f beq.n 8009fb2 - 8009f92: 687b ldr r3, [r7, #4] - 8009f94: 4a24 ldr r2, [pc, #144] ; (800a028 ) - 8009f96: 4293 cmp r3, r2 - 8009f98: d00b beq.n 8009fb2 - 8009f9a: 687b ldr r3, [r7, #4] - 8009f9c: 4a23 ldr r2, [pc, #140] ; (800a02c ) - 8009f9e: 4293 cmp r3, r2 - 8009fa0: d007 beq.n 8009fb2 - 8009fa2: 687b ldr r3, [r7, #4] - 8009fa4: 4a22 ldr r2, [pc, #136] ; (800a030 ) - 8009fa6: 4293 cmp r3, r2 - 8009fa8: d003 beq.n 8009fb2 - 8009faa: 687b ldr r3, [r7, #4] - 8009fac: 4a21 ldr r2, [pc, #132] ; (800a034 ) - 8009fae: 4293 cmp r3, r2 - 8009fb0: d108 bne.n 8009fc4 - { - /* Set the clock division */ - tmpcr1 &= ~TIM_CR1_CKD; - 8009fb2: 68fb ldr r3, [r7, #12] - 8009fb4: 4a20 ldr r2, [pc, #128] ; (800a038 ) - 8009fb6: 4013 ands r3, r2 - 8009fb8: 60fb str r3, [r7, #12] - tmpcr1 |= (uint32_t)Structure->ClockDivision; - 8009fba: 683b ldr r3, [r7, #0] - 8009fbc: 68db ldr r3, [r3, #12] - 8009fbe: 68fa ldr r2, [r7, #12] - 8009fc0: 4313 orrs r3, r2 - 8009fc2: 60fb str r3, [r7, #12] - } - - /* Set the auto-reload preload */ - MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 8009fc4: 68fb ldr r3, [r7, #12] - 8009fc6: 2280 movs r2, #128 ; 0x80 - 8009fc8: 4393 bics r3, r2 - 8009fca: 001a movs r2, r3 - 8009fcc: 683b ldr r3, [r7, #0] - 8009fce: 695b ldr r3, [r3, #20] - 8009fd0: 4313 orrs r3, r2 - 8009fd2: 60fb str r3, [r7, #12] - - TIMx->CR1 = tmpcr1; - 8009fd4: 687b ldr r3, [r7, #4] - 8009fd6: 68fa ldr r2, [r7, #12] - 8009fd8: 601a str r2, [r3, #0] - - /* Set the Autoreload value */ - TIMx->ARR = (uint32_t)Structure->Period ; - 8009fda: 683b ldr r3, [r7, #0] - 8009fdc: 689a ldr r2, [r3, #8] - 8009fde: 687b ldr r3, [r7, #4] - 8009fe0: 62da str r2, [r3, #44] ; 0x2c - - /* Set the Prescaler value */ - TIMx->PSC = Structure->Prescaler; - 8009fe2: 683b ldr r3, [r7, #0] - 8009fe4: 681a ldr r2, [r3, #0] - 8009fe6: 687b ldr r3, [r7, #4] - 8009fe8: 629a str r2, [r3, #40] ; 0x28 - - if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 8009fea: 687b ldr r3, [r7, #4] - 8009fec: 4a0c ldr r2, [pc, #48] ; (800a020 ) - 8009fee: 4293 cmp r3, r2 - 8009ff0: d00b beq.n 800a00a - 8009ff2: 687b ldr r3, [r7, #4] - 8009ff4: 4a0d ldr r2, [pc, #52] ; (800a02c ) - 8009ff6: 4293 cmp r3, r2 - 8009ff8: d007 beq.n 800a00a - 8009ffa: 687b ldr r3, [r7, #4] - 8009ffc: 4a0c ldr r2, [pc, #48] ; (800a030 ) - 8009ffe: 4293 cmp r3, r2 - 800a000: d003 beq.n 800a00a - 800a002: 687b ldr r3, [r7, #4] - 800a004: 4a0b ldr r2, [pc, #44] ; (800a034 ) - 800a006: 4293 cmp r3, r2 - 800a008: d103 bne.n 800a012 - { - /* Set the Repetition Counter value */ - TIMx->RCR = Structure->RepetitionCounter; - 800a00a: 683b ldr r3, [r7, #0] - 800a00c: 691a ldr r2, [r3, #16] - 800a00e: 687b ldr r3, [r7, #4] - 800a010: 631a str r2, [r3, #48] ; 0x30 - } - - /* Generate an update event to reload the Prescaler - and the repetition counter (only for advanced timer) value immediately */ - TIMx->EGR = TIM_EGR_UG; - 800a012: 687b ldr r3, [r7, #4] - 800a014: 2201 movs r2, #1 - 800a016: 615a str r2, [r3, #20] -} - 800a018: 46c0 nop ; (mov r8, r8) - 800a01a: 46bd mov sp, r7 - 800a01c: b004 add sp, #16 - 800a01e: bd80 pop {r7, pc} - 800a020: 40012c00 .word 0x40012c00 - 800a024: 40000400 .word 0x40000400 - 800a028: 40002000 .word 0x40002000 - 800a02c: 40014000 .word 0x40014000 - 800a030: 40014400 .word 0x40014400 - 800a034: 40014800 .word 0x40014800 - 800a038: fffffcff .word 0xfffffcff - -0800a03c : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 800a03c: b580 push {r7, lr} - 800a03e: b086 sub sp, #24 - 800a040: af00 add r7, sp, #0 - 800a042: 6078 str r0, [r7, #4] - 800a044: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Disable the Channel 1: Reset the CC1E Bit */ - TIMx->CCER &= ~TIM_CCER_CC1E; - 800a046: 687b ldr r3, [r7, #4] - 800a048: 6a1b ldr r3, [r3, #32] - 800a04a: 2201 movs r2, #1 - 800a04c: 4393 bics r3, r2 - 800a04e: 001a movs r2, r3 - 800a050: 687b ldr r3, [r7, #4] - 800a052: 621a str r2, [r3, #32] - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 800a054: 687b ldr r3, [r7, #4] - 800a056: 6a1b ldr r3, [r3, #32] - 800a058: 617b str r3, [r7, #20] - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 800a05a: 687b ldr r3, [r7, #4] - 800a05c: 685b ldr r3, [r3, #4] - 800a05e: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR1 register value */ - tmpccmrx = TIMx->CCMR1; - 800a060: 687b ldr r3, [r7, #4] - 800a062: 699b ldr r3, [r3, #24] - 800a064: 60fb str r3, [r7, #12] - - /* Reset the Output Compare Mode Bits */ - tmpccmrx &= ~TIM_CCMR1_OC1M; - 800a066: 68fb ldr r3, [r7, #12] - 800a068: 4a32 ldr r2, [pc, #200] ; (800a134 ) - 800a06a: 4013 ands r3, r2 - 800a06c: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR1_CC1S; - 800a06e: 68fb ldr r3, [r7, #12] - 800a070: 2203 movs r2, #3 - 800a072: 4393 bics r3, r2 - 800a074: 60fb str r3, [r7, #12] - /* Select the Output Compare Mode */ - tmpccmrx |= OC_Config->OCMode; - 800a076: 683b ldr r3, [r7, #0] - 800a078: 681b ldr r3, [r3, #0] - 800a07a: 68fa ldr r2, [r7, #12] - 800a07c: 4313 orrs r3, r2 - 800a07e: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC1P; - 800a080: 697b ldr r3, [r7, #20] - 800a082: 2202 movs r2, #2 - 800a084: 4393 bics r3, r2 - 800a086: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= OC_Config->OCPolarity; - 800a088: 683b ldr r3, [r7, #0] - 800a08a: 689b ldr r3, [r3, #8] - 800a08c: 697a ldr r2, [r7, #20] - 800a08e: 4313 orrs r3, r2 - 800a090: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) - 800a092: 687b ldr r3, [r7, #4] - 800a094: 4a28 ldr r2, [pc, #160] ; (800a138 ) - 800a096: 4293 cmp r3, r2 - 800a098: d00b beq.n 800a0b2 - 800a09a: 687b ldr r3, [r7, #4] - 800a09c: 4a27 ldr r2, [pc, #156] ; (800a13c ) - 800a09e: 4293 cmp r3, r2 - 800a0a0: d007 beq.n 800a0b2 - 800a0a2: 687b ldr r3, [r7, #4] - 800a0a4: 4a26 ldr r2, [pc, #152] ; (800a140 ) - 800a0a6: 4293 cmp r3, r2 - 800a0a8: d003 beq.n 800a0b2 - 800a0aa: 687b ldr r3, [r7, #4] - 800a0ac: 4a25 ldr r2, [pc, #148] ; (800a144 ) - 800a0ae: 4293 cmp r3, r2 - 800a0b0: d10c bne.n 800a0cc - { - /* Check parameters */ - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC1NP; - 800a0b2: 697b ldr r3, [r7, #20] - 800a0b4: 2208 movs r2, #8 - 800a0b6: 4393 bics r3, r2 - 800a0b8: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= OC_Config->OCNPolarity; - 800a0ba: 683b ldr r3, [r7, #0] - 800a0bc: 68db ldr r3, [r3, #12] - 800a0be: 697a ldr r2, [r7, #20] - 800a0c0: 4313 orrs r3, r2 - 800a0c2: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC1NE; - 800a0c4: 697b ldr r3, [r7, #20] - 800a0c6: 2204 movs r2, #4 - 800a0c8: 4393 bics r3, r2 - 800a0ca: 617b str r3, [r7, #20] - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a0cc: 687b ldr r3, [r7, #4] - 800a0ce: 4a1a ldr r2, [pc, #104] ; (800a138 ) - 800a0d0: 4293 cmp r3, r2 - 800a0d2: d00b beq.n 800a0ec - 800a0d4: 687b ldr r3, [r7, #4] - 800a0d6: 4a19 ldr r2, [pc, #100] ; (800a13c ) - 800a0d8: 4293 cmp r3, r2 - 800a0da: d007 beq.n 800a0ec - 800a0dc: 687b ldr r3, [r7, #4] - 800a0de: 4a18 ldr r2, [pc, #96] ; (800a140 ) - 800a0e0: 4293 cmp r3, r2 - 800a0e2: d003 beq.n 800a0ec - 800a0e4: 687b ldr r3, [r7, #4] - 800a0e6: 4a17 ldr r2, [pc, #92] ; (800a144 ) - 800a0e8: 4293 cmp r3, r2 - 800a0ea: d111 bne.n 800a110 - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS1; - 800a0ec: 693b ldr r3, [r7, #16] - 800a0ee: 4a16 ldr r2, [pc, #88] ; (800a148 ) - 800a0f0: 4013 ands r3, r2 - 800a0f2: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS1N; - 800a0f4: 693b ldr r3, [r7, #16] - 800a0f6: 4a15 ldr r2, [pc, #84] ; (800a14c ) - 800a0f8: 4013 ands r3, r2 - 800a0fa: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= OC_Config->OCIdleState; - 800a0fc: 683b ldr r3, [r7, #0] - 800a0fe: 695b ldr r3, [r3, #20] - 800a100: 693a ldr r2, [r7, #16] - 800a102: 4313 orrs r3, r2 - 800a104: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= OC_Config->OCNIdleState; - 800a106: 683b ldr r3, [r7, #0] - 800a108: 699b ldr r3, [r3, #24] - 800a10a: 693a ldr r2, [r7, #16] - 800a10c: 4313 orrs r3, r2 - 800a10e: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 800a110: 687b ldr r3, [r7, #4] - 800a112: 693a ldr r2, [r7, #16] - 800a114: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR1 */ - TIMx->CCMR1 = tmpccmrx; - 800a116: 687b ldr r3, [r7, #4] - 800a118: 68fa ldr r2, [r7, #12] - 800a11a: 619a str r2, [r3, #24] - - /* Set the Capture Compare Register value */ - TIMx->CCR1 = OC_Config->Pulse; - 800a11c: 683b ldr r3, [r7, #0] - 800a11e: 685a ldr r2, [r3, #4] - 800a120: 687b ldr r3, [r7, #4] - 800a122: 635a str r2, [r3, #52] ; 0x34 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 800a124: 687b ldr r3, [r7, #4] - 800a126: 697a ldr r2, [r7, #20] - 800a128: 621a str r2, [r3, #32] -} - 800a12a: 46c0 nop ; (mov r8, r8) - 800a12c: 46bd mov sp, r7 - 800a12e: b006 add sp, #24 - 800a130: bd80 pop {r7, pc} - 800a132: 46c0 nop ; (mov r8, r8) - 800a134: fffeff8f .word 0xfffeff8f - 800a138: 40012c00 .word 0x40012c00 - 800a13c: 40014000 .word 0x40014000 - 800a140: 40014400 .word 0x40014400 - 800a144: 40014800 .word 0x40014800 - 800a148: fffffeff .word 0xfffffeff - 800a14c: fffffdff .word 0xfffffdff - -0800a150 : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 800a150: b580 push {r7, lr} - 800a152: b086 sub sp, #24 - 800a154: af00 add r7, sp, #0 - 800a156: 6078 str r0, [r7, #4] - 800a158: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Disable the Channel 2: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC2E; - 800a15a: 687b ldr r3, [r7, #4] - 800a15c: 6a1b ldr r3, [r3, #32] - 800a15e: 2210 movs r2, #16 - 800a160: 4393 bics r3, r2 - 800a162: 001a movs r2, r3 - 800a164: 687b ldr r3, [r7, #4] - 800a166: 621a str r2, [r3, #32] - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 800a168: 687b ldr r3, [r7, #4] - 800a16a: 6a1b ldr r3, [r3, #32] - 800a16c: 617b str r3, [r7, #20] - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 800a16e: 687b ldr r3, [r7, #4] - 800a170: 685b ldr r3, [r3, #4] - 800a172: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR1 register value */ - tmpccmrx = TIMx->CCMR1; - 800a174: 687b ldr r3, [r7, #4] - 800a176: 699b ldr r3, [r3, #24] - 800a178: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR1_OC2M; - 800a17a: 68fb ldr r3, [r7, #12] - 800a17c: 4a2e ldr r2, [pc, #184] ; (800a238 ) - 800a17e: 4013 ands r3, r2 - 800a180: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR1_CC2S; - 800a182: 68fb ldr r3, [r7, #12] - 800a184: 4a2d ldr r2, [pc, #180] ; (800a23c ) - 800a186: 4013 ands r3, r2 - 800a188: 60fb str r3, [r7, #12] - - /* Select the Output Compare Mode */ - tmpccmrx |= (OC_Config->OCMode << 8U); - 800a18a: 683b ldr r3, [r7, #0] - 800a18c: 681b ldr r3, [r3, #0] - 800a18e: 021b lsls r3, r3, #8 - 800a190: 68fa ldr r2, [r7, #12] - 800a192: 4313 orrs r3, r2 - 800a194: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC2P; - 800a196: 697b ldr r3, [r7, #20] - 800a198: 2220 movs r2, #32 - 800a19a: 4393 bics r3, r2 - 800a19c: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 4U); - 800a19e: 683b ldr r3, [r7, #0] - 800a1a0: 689b ldr r3, [r3, #8] - 800a1a2: 011b lsls r3, r3, #4 - 800a1a4: 697a ldr r2, [r7, #20] - 800a1a6: 4313 orrs r3, r2 - 800a1a8: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) - 800a1aa: 687b ldr r3, [r7, #4] - 800a1ac: 4a24 ldr r2, [pc, #144] ; (800a240 ) - 800a1ae: 4293 cmp r3, r2 - 800a1b0: d10d bne.n 800a1ce - { - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC2NP; - 800a1b2: 697b ldr r3, [r7, #20] - 800a1b4: 2280 movs r2, #128 ; 0x80 - 800a1b6: 4393 bics r3, r2 - 800a1b8: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= (OC_Config->OCNPolarity << 4U); - 800a1ba: 683b ldr r3, [r7, #0] - 800a1bc: 68db ldr r3, [r3, #12] - 800a1be: 011b lsls r3, r3, #4 - 800a1c0: 697a ldr r2, [r7, #20] - 800a1c2: 4313 orrs r3, r2 - 800a1c4: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC2NE; - 800a1c6: 697b ldr r3, [r7, #20] - 800a1c8: 2240 movs r2, #64 ; 0x40 - 800a1ca: 4393 bics r3, r2 - 800a1cc: 617b str r3, [r7, #20] - - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a1ce: 687b ldr r3, [r7, #4] - 800a1d0: 4a1b ldr r2, [pc, #108] ; (800a240 ) - 800a1d2: 4293 cmp r3, r2 - 800a1d4: d00b beq.n 800a1ee - 800a1d6: 687b ldr r3, [r7, #4] - 800a1d8: 4a1a ldr r2, [pc, #104] ; (800a244 ) - 800a1da: 4293 cmp r3, r2 - 800a1dc: d007 beq.n 800a1ee - 800a1de: 687b ldr r3, [r7, #4] - 800a1e0: 4a19 ldr r2, [pc, #100] ; (800a248 ) - 800a1e2: 4293 cmp r3, r2 - 800a1e4: d003 beq.n 800a1ee - 800a1e6: 687b ldr r3, [r7, #4] - 800a1e8: 4a18 ldr r2, [pc, #96] ; (800a24c ) - 800a1ea: 4293 cmp r3, r2 - 800a1ec: d113 bne.n 800a216 - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS2; - 800a1ee: 693b ldr r3, [r7, #16] - 800a1f0: 4a17 ldr r2, [pc, #92] ; (800a250 ) - 800a1f2: 4013 ands r3, r2 - 800a1f4: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS2N; - 800a1f6: 693b ldr r3, [r7, #16] - 800a1f8: 4a16 ldr r2, [pc, #88] ; (800a254 ) - 800a1fa: 4013 ands r3, r2 - 800a1fc: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 2U); - 800a1fe: 683b ldr r3, [r7, #0] - 800a200: 695b ldr r3, [r3, #20] - 800a202: 009b lsls r3, r3, #2 - 800a204: 693a ldr r2, [r7, #16] - 800a206: 4313 orrs r3, r2 - 800a208: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= (OC_Config->OCNIdleState << 2U); - 800a20a: 683b ldr r3, [r7, #0] - 800a20c: 699b ldr r3, [r3, #24] - 800a20e: 009b lsls r3, r3, #2 - 800a210: 693a ldr r2, [r7, #16] - 800a212: 4313 orrs r3, r2 - 800a214: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 800a216: 687b ldr r3, [r7, #4] - 800a218: 693a ldr r2, [r7, #16] - 800a21a: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR1 */ - TIMx->CCMR1 = tmpccmrx; - 800a21c: 687b ldr r3, [r7, #4] - 800a21e: 68fa ldr r2, [r7, #12] - 800a220: 619a str r2, [r3, #24] - - /* Set the Capture Compare Register value */ - TIMx->CCR2 = OC_Config->Pulse; - 800a222: 683b ldr r3, [r7, #0] - 800a224: 685a ldr r2, [r3, #4] - 800a226: 687b ldr r3, [r7, #4] - 800a228: 639a str r2, [r3, #56] ; 0x38 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 800a22a: 687b ldr r3, [r7, #4] - 800a22c: 697a ldr r2, [r7, #20] - 800a22e: 621a str r2, [r3, #32] -} - 800a230: 46c0 nop ; (mov r8, r8) - 800a232: 46bd mov sp, r7 - 800a234: b006 add sp, #24 - 800a236: bd80 pop {r7, pc} - 800a238: feff8fff .word 0xfeff8fff - 800a23c: fffffcff .word 0xfffffcff - 800a240: 40012c00 .word 0x40012c00 - 800a244: 40014000 .word 0x40014000 - 800a248: 40014400 .word 0x40014400 - 800a24c: 40014800 .word 0x40014800 - 800a250: fffffbff .word 0xfffffbff - 800a254: fffff7ff .word 0xfffff7ff - -0800a258 : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 800a258: b580 push {r7, lr} - 800a25a: b086 sub sp, #24 - 800a25c: af00 add r7, sp, #0 - 800a25e: 6078 str r0, [r7, #4] - 800a260: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Disable the Channel 3: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC3E; - 800a262: 687b ldr r3, [r7, #4] - 800a264: 6a1b ldr r3, [r3, #32] - 800a266: 4a35 ldr r2, [pc, #212] ; (800a33c ) - 800a268: 401a ands r2, r3 - 800a26a: 687b ldr r3, [r7, #4] - 800a26c: 621a str r2, [r3, #32] - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 800a26e: 687b ldr r3, [r7, #4] - 800a270: 6a1b ldr r3, [r3, #32] - 800a272: 617b str r3, [r7, #20] - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 800a274: 687b ldr r3, [r7, #4] - 800a276: 685b ldr r3, [r3, #4] - 800a278: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR2 register value */ - tmpccmrx = TIMx->CCMR2; - 800a27a: 687b ldr r3, [r7, #4] - 800a27c: 69db ldr r3, [r3, #28] - 800a27e: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR2_OC3M; - 800a280: 68fb ldr r3, [r7, #12] - 800a282: 4a2f ldr r2, [pc, #188] ; (800a340 ) - 800a284: 4013 ands r3, r2 - 800a286: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR2_CC3S; - 800a288: 68fb ldr r3, [r7, #12] - 800a28a: 2203 movs r2, #3 - 800a28c: 4393 bics r3, r2 - 800a28e: 60fb str r3, [r7, #12] - /* Select the Output Compare Mode */ - tmpccmrx |= OC_Config->OCMode; - 800a290: 683b ldr r3, [r7, #0] - 800a292: 681b ldr r3, [r3, #0] - 800a294: 68fa ldr r2, [r7, #12] - 800a296: 4313 orrs r3, r2 - 800a298: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC3P; - 800a29a: 697b ldr r3, [r7, #20] - 800a29c: 4a29 ldr r2, [pc, #164] ; (800a344 ) - 800a29e: 4013 ands r3, r2 - 800a2a0: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 8U); - 800a2a2: 683b ldr r3, [r7, #0] - 800a2a4: 689b ldr r3, [r3, #8] - 800a2a6: 021b lsls r3, r3, #8 - 800a2a8: 697a ldr r2, [r7, #20] - 800a2aa: 4313 orrs r3, r2 - 800a2ac: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) - 800a2ae: 687b ldr r3, [r7, #4] - 800a2b0: 4a25 ldr r2, [pc, #148] ; (800a348 ) - 800a2b2: 4293 cmp r3, r2 - 800a2b4: d10d bne.n 800a2d2 - { - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC3NP; - 800a2b6: 697b ldr r3, [r7, #20] - 800a2b8: 4a24 ldr r2, [pc, #144] ; (800a34c ) - 800a2ba: 4013 ands r3, r2 - 800a2bc: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= (OC_Config->OCNPolarity << 8U); - 800a2be: 683b ldr r3, [r7, #0] - 800a2c0: 68db ldr r3, [r3, #12] - 800a2c2: 021b lsls r3, r3, #8 - 800a2c4: 697a ldr r2, [r7, #20] - 800a2c6: 4313 orrs r3, r2 - 800a2c8: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC3NE; - 800a2ca: 697b ldr r3, [r7, #20] - 800a2cc: 4a20 ldr r2, [pc, #128] ; (800a350 ) - 800a2ce: 4013 ands r3, r2 - 800a2d0: 617b str r3, [r7, #20] - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a2d2: 687b ldr r3, [r7, #4] - 800a2d4: 4a1c ldr r2, [pc, #112] ; (800a348 ) - 800a2d6: 4293 cmp r3, r2 - 800a2d8: d00b beq.n 800a2f2 - 800a2da: 687b ldr r3, [r7, #4] - 800a2dc: 4a1d ldr r2, [pc, #116] ; (800a354 ) - 800a2de: 4293 cmp r3, r2 - 800a2e0: d007 beq.n 800a2f2 - 800a2e2: 687b ldr r3, [r7, #4] - 800a2e4: 4a1c ldr r2, [pc, #112] ; (800a358 ) - 800a2e6: 4293 cmp r3, r2 - 800a2e8: d003 beq.n 800a2f2 - 800a2ea: 687b ldr r3, [r7, #4] - 800a2ec: 4a1b ldr r2, [pc, #108] ; (800a35c ) - 800a2ee: 4293 cmp r3, r2 - 800a2f0: d113 bne.n 800a31a - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS3; - 800a2f2: 693b ldr r3, [r7, #16] - 800a2f4: 4a1a ldr r2, [pc, #104] ; (800a360 ) - 800a2f6: 4013 ands r3, r2 - 800a2f8: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS3N; - 800a2fa: 693b ldr r3, [r7, #16] - 800a2fc: 4a19 ldr r2, [pc, #100] ; (800a364 ) - 800a2fe: 4013 ands r3, r2 - 800a300: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 4U); - 800a302: 683b ldr r3, [r7, #0] - 800a304: 695b ldr r3, [r3, #20] - 800a306: 011b lsls r3, r3, #4 - 800a308: 693a ldr r2, [r7, #16] - 800a30a: 4313 orrs r3, r2 - 800a30c: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= (OC_Config->OCNIdleState << 4U); - 800a30e: 683b ldr r3, [r7, #0] - 800a310: 699b ldr r3, [r3, #24] - 800a312: 011b lsls r3, r3, #4 - 800a314: 693a ldr r2, [r7, #16] - 800a316: 4313 orrs r3, r2 - 800a318: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 800a31a: 687b ldr r3, [r7, #4] - 800a31c: 693a ldr r2, [r7, #16] - 800a31e: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR2 */ - TIMx->CCMR2 = tmpccmrx; - 800a320: 687b ldr r3, [r7, #4] - 800a322: 68fa ldr r2, [r7, #12] - 800a324: 61da str r2, [r3, #28] - - /* Set the Capture Compare Register value */ - TIMx->CCR3 = OC_Config->Pulse; - 800a326: 683b ldr r3, [r7, #0] - 800a328: 685a ldr r2, [r3, #4] - 800a32a: 687b ldr r3, [r7, #4] - 800a32c: 63da str r2, [r3, #60] ; 0x3c - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 800a32e: 687b ldr r3, [r7, #4] - 800a330: 697a ldr r2, [r7, #20] - 800a332: 621a str r2, [r3, #32] -} - 800a334: 46c0 nop ; (mov r8, r8) - 800a336: 46bd mov sp, r7 - 800a338: b006 add sp, #24 - 800a33a: bd80 pop {r7, pc} - 800a33c: fffffeff .word 0xfffffeff - 800a340: fffeff8f .word 0xfffeff8f - 800a344: fffffdff .word 0xfffffdff - 800a348: 40012c00 .word 0x40012c00 - 800a34c: fffff7ff .word 0xfffff7ff - 800a350: fffffbff .word 0xfffffbff - 800a354: 40014000 .word 0x40014000 - 800a358: 40014400 .word 0x40014400 - 800a35c: 40014800 .word 0x40014800 - 800a360: ffffefff .word 0xffffefff - 800a364: ffffdfff .word 0xffffdfff - -0800a368 : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 800a368: b580 push {r7, lr} - 800a36a: b086 sub sp, #24 - 800a36c: af00 add r7, sp, #0 - 800a36e: 6078 str r0, [r7, #4] - 800a370: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Disable the Channel 4: Reset the CC4E Bit */ - TIMx->CCER &= ~TIM_CCER_CC4E; - 800a372: 687b ldr r3, [r7, #4] - 800a374: 6a1b ldr r3, [r3, #32] - 800a376: 4a28 ldr r2, [pc, #160] ; (800a418 ) - 800a378: 401a ands r2, r3 - 800a37a: 687b ldr r3, [r7, #4] - 800a37c: 621a str r2, [r3, #32] - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 800a37e: 687b ldr r3, [r7, #4] - 800a380: 6a1b ldr r3, [r3, #32] - 800a382: 613b str r3, [r7, #16] - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 800a384: 687b ldr r3, [r7, #4] - 800a386: 685b ldr r3, [r3, #4] - 800a388: 617b str r3, [r7, #20] - - /* Get the TIMx CCMR2 register value */ - tmpccmrx = TIMx->CCMR2; - 800a38a: 687b ldr r3, [r7, #4] - 800a38c: 69db ldr r3, [r3, #28] - 800a38e: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR2_OC4M; - 800a390: 68fb ldr r3, [r7, #12] - 800a392: 4a22 ldr r2, [pc, #136] ; (800a41c ) - 800a394: 4013 ands r3, r2 - 800a396: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR2_CC4S; - 800a398: 68fb ldr r3, [r7, #12] - 800a39a: 4a21 ldr r2, [pc, #132] ; (800a420 ) - 800a39c: 4013 ands r3, r2 - 800a39e: 60fb str r3, [r7, #12] - - /* Select the Output Compare Mode */ - tmpccmrx |= (OC_Config->OCMode << 8U); - 800a3a0: 683b ldr r3, [r7, #0] - 800a3a2: 681b ldr r3, [r3, #0] - 800a3a4: 021b lsls r3, r3, #8 - 800a3a6: 68fa ldr r2, [r7, #12] - 800a3a8: 4313 orrs r3, r2 - 800a3aa: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC4P; - 800a3ac: 693b ldr r3, [r7, #16] - 800a3ae: 4a1d ldr r2, [pc, #116] ; (800a424 ) - 800a3b0: 4013 ands r3, r2 - 800a3b2: 613b str r3, [r7, #16] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 12U); - 800a3b4: 683b ldr r3, [r7, #0] - 800a3b6: 689b ldr r3, [r3, #8] - 800a3b8: 031b lsls r3, r3, #12 - 800a3ba: 693a ldr r2, [r7, #16] - 800a3bc: 4313 orrs r3, r2 - 800a3be: 613b str r3, [r7, #16] - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a3c0: 687b ldr r3, [r7, #4] - 800a3c2: 4a19 ldr r2, [pc, #100] ; (800a428 ) - 800a3c4: 4293 cmp r3, r2 - 800a3c6: d00b beq.n 800a3e0 - 800a3c8: 687b ldr r3, [r7, #4] - 800a3ca: 4a18 ldr r2, [pc, #96] ; (800a42c ) - 800a3cc: 4293 cmp r3, r2 - 800a3ce: d007 beq.n 800a3e0 - 800a3d0: 687b ldr r3, [r7, #4] - 800a3d2: 4a17 ldr r2, [pc, #92] ; (800a430 ) - 800a3d4: 4293 cmp r3, r2 - 800a3d6: d003 beq.n 800a3e0 - 800a3d8: 687b ldr r3, [r7, #4] - 800a3da: 4a16 ldr r2, [pc, #88] ; (800a434 ) - 800a3dc: 4293 cmp r3, r2 - 800a3de: d109 bne.n 800a3f4 - { - /* Check parameters */ - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS4; - 800a3e0: 697b ldr r3, [r7, #20] - 800a3e2: 4a15 ldr r2, [pc, #84] ; (800a438 ) - 800a3e4: 4013 ands r3, r2 - 800a3e6: 617b str r3, [r7, #20] - - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 6U); - 800a3e8: 683b ldr r3, [r7, #0] - 800a3ea: 695b ldr r3, [r3, #20] - 800a3ec: 019b lsls r3, r3, #6 - 800a3ee: 697a ldr r2, [r7, #20] - 800a3f0: 4313 orrs r3, r2 - 800a3f2: 617b str r3, [r7, #20] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 800a3f4: 687b ldr r3, [r7, #4] - 800a3f6: 697a ldr r2, [r7, #20] - 800a3f8: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR2 */ - TIMx->CCMR2 = tmpccmrx; - 800a3fa: 687b ldr r3, [r7, #4] - 800a3fc: 68fa ldr r2, [r7, #12] - 800a3fe: 61da str r2, [r3, #28] - - /* Set the Capture Compare Register value */ - TIMx->CCR4 = OC_Config->Pulse; - 800a400: 683b ldr r3, [r7, #0] - 800a402: 685a ldr r2, [r3, #4] - 800a404: 687b ldr r3, [r7, #4] - 800a406: 641a str r2, [r3, #64] ; 0x40 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 800a408: 687b ldr r3, [r7, #4] - 800a40a: 693a ldr r2, [r7, #16] - 800a40c: 621a str r2, [r3, #32] -} - 800a40e: 46c0 nop ; (mov r8, r8) - 800a410: 46bd mov sp, r7 - 800a412: b006 add sp, #24 - 800a414: bd80 pop {r7, pc} - 800a416: 46c0 nop ; (mov r8, r8) - 800a418: ffffefff .word 0xffffefff - 800a41c: feff8fff .word 0xfeff8fff - 800a420: fffffcff .word 0xfffffcff - 800a424: ffffdfff .word 0xffffdfff - 800a428: 40012c00 .word 0x40012c00 - 800a42c: 40014000 .word 0x40014000 - 800a430: 40014400 .word 0x40014400 - 800a434: 40014800 .word 0x40014800 - 800a438: ffffbfff .word 0xffffbfff - -0800a43c : - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, - const TIM_OC_InitTypeDef *OC_Config) -{ - 800a43c: b580 push {r7, lr} - 800a43e: b086 sub sp, #24 - 800a440: af00 add r7, sp, #0 - 800a442: 6078 str r0, [r7, #4] - 800a444: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Disable the output: Reset the CCxE Bit */ - TIMx->CCER &= ~TIM_CCER_CC5E; - 800a446: 687b ldr r3, [r7, #4] - 800a448: 6a1b ldr r3, [r3, #32] - 800a44a: 4a25 ldr r2, [pc, #148] ; (800a4e0 ) - 800a44c: 401a ands r2, r3 - 800a44e: 687b ldr r3, [r7, #4] - 800a450: 621a str r2, [r3, #32] - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 800a452: 687b ldr r3, [r7, #4] - 800a454: 6a1b ldr r3, [r3, #32] - 800a456: 613b str r3, [r7, #16] - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 800a458: 687b ldr r3, [r7, #4] - 800a45a: 685b ldr r3, [r3, #4] - 800a45c: 617b str r3, [r7, #20] - /* Get the TIMx CCMR1 register value */ - tmpccmrx = TIMx->CCMR3; - 800a45e: 687b ldr r3, [r7, #4] - 800a460: 6d5b ldr r3, [r3, #84] ; 0x54 - 800a462: 60fb str r3, [r7, #12] - - /* Reset the Output Compare Mode Bits */ - tmpccmrx &= ~(TIM_CCMR3_OC5M); - 800a464: 68fb ldr r3, [r7, #12] - 800a466: 4a1f ldr r2, [pc, #124] ; (800a4e4 ) - 800a468: 4013 ands r3, r2 - 800a46a: 60fb str r3, [r7, #12] - /* Select the Output Compare Mode */ - tmpccmrx |= OC_Config->OCMode; - 800a46c: 683b ldr r3, [r7, #0] - 800a46e: 681b ldr r3, [r3, #0] - 800a470: 68fa ldr r2, [r7, #12] - 800a472: 4313 orrs r3, r2 - 800a474: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC5P; - 800a476: 693b ldr r3, [r7, #16] - 800a478: 4a1b ldr r2, [pc, #108] ; (800a4e8 ) - 800a47a: 4013 ands r3, r2 - 800a47c: 613b str r3, [r7, #16] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 16U); - 800a47e: 683b ldr r3, [r7, #0] - 800a480: 689b ldr r3, [r3, #8] - 800a482: 041b lsls r3, r3, #16 - 800a484: 693a ldr r2, [r7, #16] - 800a486: 4313 orrs r3, r2 - 800a488: 613b str r3, [r7, #16] - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a48a: 687b ldr r3, [r7, #4] - 800a48c: 4a17 ldr r2, [pc, #92] ; (800a4ec ) - 800a48e: 4293 cmp r3, r2 - 800a490: d00b beq.n 800a4aa - 800a492: 687b ldr r3, [r7, #4] - 800a494: 4a16 ldr r2, [pc, #88] ; (800a4f0 ) - 800a496: 4293 cmp r3, r2 - 800a498: d007 beq.n 800a4aa - 800a49a: 687b ldr r3, [r7, #4] - 800a49c: 4a15 ldr r2, [pc, #84] ; (800a4f4 ) - 800a49e: 4293 cmp r3, r2 - 800a4a0: d003 beq.n 800a4aa - 800a4a2: 687b ldr r3, [r7, #4] - 800a4a4: 4a14 ldr r2, [pc, #80] ; (800a4f8 ) - 800a4a6: 4293 cmp r3, r2 - 800a4a8: d109 bne.n 800a4be - { - /* Reset the Output Compare IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS5; - 800a4aa: 697b ldr r3, [r7, #20] - 800a4ac: 4a0c ldr r2, [pc, #48] ; (800a4e0 ) - 800a4ae: 4013 ands r3, r2 - 800a4b0: 617b str r3, [r7, #20] - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 8U); - 800a4b2: 683b ldr r3, [r7, #0] - 800a4b4: 695b ldr r3, [r3, #20] - 800a4b6: 021b lsls r3, r3, #8 - 800a4b8: 697a ldr r2, [r7, #20] - 800a4ba: 4313 orrs r3, r2 - 800a4bc: 617b str r3, [r7, #20] - } - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 800a4be: 687b ldr r3, [r7, #4] - 800a4c0: 697a ldr r2, [r7, #20] - 800a4c2: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR3 */ - TIMx->CCMR3 = tmpccmrx; - 800a4c4: 687b ldr r3, [r7, #4] - 800a4c6: 68fa ldr r2, [r7, #12] - 800a4c8: 655a str r2, [r3, #84] ; 0x54 - - /* Set the Capture Compare Register value */ - TIMx->CCR5 = OC_Config->Pulse; - 800a4ca: 683b ldr r3, [r7, #0] - 800a4cc: 685a ldr r2, [r3, #4] - 800a4ce: 687b ldr r3, [r7, #4] - 800a4d0: 659a str r2, [r3, #88] ; 0x58 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 800a4d2: 687b ldr r3, [r7, #4] - 800a4d4: 693a ldr r2, [r7, #16] - 800a4d6: 621a str r2, [r3, #32] -} - 800a4d8: 46c0 nop ; (mov r8, r8) - 800a4da: 46bd mov sp, r7 - 800a4dc: b006 add sp, #24 - 800a4de: bd80 pop {r7, pc} - 800a4e0: fffeffff .word 0xfffeffff - 800a4e4: fffeff8f .word 0xfffeff8f - 800a4e8: fffdffff .word 0xfffdffff - 800a4ec: 40012c00 .word 0x40012c00 - 800a4f0: 40014000 .word 0x40014000 - 800a4f4: 40014400 .word 0x40014400 - 800a4f8: 40014800 .word 0x40014800 - -0800a4fc : - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, - const TIM_OC_InitTypeDef *OC_Config) -{ - 800a4fc: b580 push {r7, lr} - 800a4fe: b086 sub sp, #24 - 800a500: af00 add r7, sp, #0 - 800a502: 6078 str r0, [r7, #4] - 800a504: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Disable the output: Reset the CCxE Bit */ - TIMx->CCER &= ~TIM_CCER_CC6E; - 800a506: 687b ldr r3, [r7, #4] - 800a508: 6a1b ldr r3, [r3, #32] - 800a50a: 4a26 ldr r2, [pc, #152] ; (800a5a4 ) - 800a50c: 401a ands r2, r3 - 800a50e: 687b ldr r3, [r7, #4] - 800a510: 621a str r2, [r3, #32] - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 800a512: 687b ldr r3, [r7, #4] - 800a514: 6a1b ldr r3, [r3, #32] - 800a516: 613b str r3, [r7, #16] - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 800a518: 687b ldr r3, [r7, #4] - 800a51a: 685b ldr r3, [r3, #4] - 800a51c: 617b str r3, [r7, #20] - /* Get the TIMx CCMR1 register value */ - tmpccmrx = TIMx->CCMR3; - 800a51e: 687b ldr r3, [r7, #4] - 800a520: 6d5b ldr r3, [r3, #84] ; 0x54 - 800a522: 60fb str r3, [r7, #12] - - /* Reset the Output Compare Mode Bits */ - tmpccmrx &= ~(TIM_CCMR3_OC6M); - 800a524: 68fb ldr r3, [r7, #12] - 800a526: 4a20 ldr r2, [pc, #128] ; (800a5a8 ) - 800a528: 4013 ands r3, r2 - 800a52a: 60fb str r3, [r7, #12] - /* Select the Output Compare Mode */ - tmpccmrx |= (OC_Config->OCMode << 8U); - 800a52c: 683b ldr r3, [r7, #0] - 800a52e: 681b ldr r3, [r3, #0] - 800a530: 021b lsls r3, r3, #8 - 800a532: 68fa ldr r2, [r7, #12] - 800a534: 4313 orrs r3, r2 - 800a536: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= (uint32_t)~TIM_CCER_CC6P; - 800a538: 693b ldr r3, [r7, #16] - 800a53a: 4a1c ldr r2, [pc, #112] ; (800a5ac ) - 800a53c: 4013 ands r3, r2 - 800a53e: 613b str r3, [r7, #16] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 20U); - 800a540: 683b ldr r3, [r7, #0] - 800a542: 689b ldr r3, [r3, #8] - 800a544: 051b lsls r3, r3, #20 - 800a546: 693a ldr r2, [r7, #16] - 800a548: 4313 orrs r3, r2 - 800a54a: 613b str r3, [r7, #16] - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800a54c: 687b ldr r3, [r7, #4] - 800a54e: 4a18 ldr r2, [pc, #96] ; (800a5b0 ) - 800a550: 4293 cmp r3, r2 - 800a552: d00b beq.n 800a56c - 800a554: 687b ldr r3, [r7, #4] - 800a556: 4a17 ldr r2, [pc, #92] ; (800a5b4 ) - 800a558: 4293 cmp r3, r2 - 800a55a: d007 beq.n 800a56c - 800a55c: 687b ldr r3, [r7, #4] - 800a55e: 4a16 ldr r2, [pc, #88] ; (800a5b8 ) - 800a560: 4293 cmp r3, r2 - 800a562: d003 beq.n 800a56c - 800a564: 687b ldr r3, [r7, #4] - 800a566: 4a15 ldr r2, [pc, #84] ; (800a5bc ) - 800a568: 4293 cmp r3, r2 - 800a56a: d109 bne.n 800a580 - { - /* Reset the Output Compare IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS6; - 800a56c: 697b ldr r3, [r7, #20] - 800a56e: 4a14 ldr r2, [pc, #80] ; (800a5c0 ) - 800a570: 4013 ands r3, r2 - 800a572: 617b str r3, [r7, #20] - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 10U); - 800a574: 683b ldr r3, [r7, #0] - 800a576: 695b ldr r3, [r3, #20] - 800a578: 029b lsls r3, r3, #10 - 800a57a: 697a ldr r2, [r7, #20] - 800a57c: 4313 orrs r3, r2 - 800a57e: 617b str r3, [r7, #20] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 800a580: 687b ldr r3, [r7, #4] - 800a582: 697a ldr r2, [r7, #20] - 800a584: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR3 */ - TIMx->CCMR3 = tmpccmrx; - 800a586: 687b ldr r3, [r7, #4] - 800a588: 68fa ldr r2, [r7, #12] - 800a58a: 655a str r2, [r3, #84] ; 0x54 - - /* Set the Capture Compare Register value */ - TIMx->CCR6 = OC_Config->Pulse; - 800a58c: 683b ldr r3, [r7, #0] - 800a58e: 685a ldr r2, [r3, #4] - 800a590: 687b ldr r3, [r7, #4] - 800a592: 65da str r2, [r3, #92] ; 0x5c - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 800a594: 687b ldr r3, [r7, #4] - 800a596: 693a ldr r2, [r7, #16] - 800a598: 621a str r2, [r3, #32] -} - 800a59a: 46c0 nop ; (mov r8, r8) - 800a59c: 46bd mov sp, r7 - 800a59e: b006 add sp, #24 - 800a5a0: bd80 pop {r7, pc} - 800a5a2: 46c0 nop ; (mov r8, r8) - 800a5a4: ffefffff .word 0xffefffff - 800a5a8: feff8fff .word 0xfeff8fff - 800a5ac: ffdfffff .word 0xffdfffff - 800a5b0: 40012c00 .word 0x40012c00 - 800a5b4: 40014000 .word 0x40014000 - 800a5b8: 40014400 .word 0x40014400 - 800a5bc: 40014800 .word 0x40014800 - 800a5c0: fffbffff .word 0xfffbffff - -0800a5c4 : - * @param sSlaveConfig Slave timer configuration - * @retval None - */ -static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, - const TIM_SlaveConfigTypeDef *sSlaveConfig) -{ - 800a5c4: b580 push {r7, lr} - 800a5c6: b086 sub sp, #24 - 800a5c8: af00 add r7, sp, #0 - 800a5ca: 6078 str r0, [r7, #4] - 800a5cc: 6039 str r1, [r7, #0] - HAL_StatusTypeDef status = HAL_OK; - 800a5ce: 2317 movs r3, #23 - 800a5d0: 18fb adds r3, r7, r3 - 800a5d2: 2200 movs r2, #0 - 800a5d4: 701a strb r2, [r3, #0] - uint32_t tmpsmcr; - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Get the TIMx SMCR register value */ - tmpsmcr = htim->Instance->SMCR; - 800a5d6: 687b ldr r3, [r7, #4] - 800a5d8: 681b ldr r3, [r3, #0] - 800a5da: 689b ldr r3, [r3, #8] - 800a5dc: 613b str r3, [r7, #16] - - /* Reset the Trigger Selection Bits */ - tmpsmcr &= ~TIM_SMCR_TS; - 800a5de: 693b ldr r3, [r7, #16] - 800a5e0: 4a41 ldr r2, [pc, #260] ; (800a6e8 ) - 800a5e2: 4013 ands r3, r2 - 800a5e4: 613b str r3, [r7, #16] - /* Set the Input Trigger source */ - tmpsmcr |= sSlaveConfig->InputTrigger; - 800a5e6: 683b ldr r3, [r7, #0] - 800a5e8: 685b ldr r3, [r3, #4] - 800a5ea: 693a ldr r2, [r7, #16] - 800a5ec: 4313 orrs r3, r2 - 800a5ee: 613b str r3, [r7, #16] - - /* Reset the slave mode Bits */ - tmpsmcr &= ~TIM_SMCR_SMS; - 800a5f0: 693b ldr r3, [r7, #16] - 800a5f2: 4a3e ldr r2, [pc, #248] ; (800a6ec ) - 800a5f4: 4013 ands r3, r2 - 800a5f6: 613b str r3, [r7, #16] - /* Set the slave mode */ - tmpsmcr |= sSlaveConfig->SlaveMode; - 800a5f8: 683b ldr r3, [r7, #0] - 800a5fa: 681b ldr r3, [r3, #0] - 800a5fc: 693a ldr r2, [r7, #16] - 800a5fe: 4313 orrs r3, r2 - 800a600: 613b str r3, [r7, #16] - - /* Write to TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 800a602: 687b ldr r3, [r7, #4] - 800a604: 681b ldr r3, [r3, #0] - 800a606: 693a ldr r2, [r7, #16] - 800a608: 609a str r2, [r3, #8] - - /* Configure the trigger prescaler, filter, and polarity */ - switch (sSlaveConfig->InputTrigger) - 800a60a: 683b ldr r3, [r7, #0] - 800a60c: 685b ldr r3, [r3, #4] - 800a60e: 2b70 cmp r3, #112 ; 0x70 - 800a610: d015 beq.n 800a63e - 800a612: d900 bls.n 800a616 - 800a614: e05b b.n 800a6ce - 800a616: 2b60 cmp r3, #96 ; 0x60 - 800a618: d04f beq.n 800a6ba - 800a61a: d858 bhi.n 800a6ce - 800a61c: 2b50 cmp r3, #80 ; 0x50 - 800a61e: d042 beq.n 800a6a6 - 800a620: d855 bhi.n 800a6ce - 800a622: 2b40 cmp r3, #64 ; 0x40 - 800a624: d016 beq.n 800a654 - 800a626: d852 bhi.n 800a6ce - 800a628: 2b30 cmp r3, #48 ; 0x30 - 800a62a: d055 beq.n 800a6d8 - 800a62c: d84f bhi.n 800a6ce - 800a62e: 2b20 cmp r3, #32 - 800a630: d052 beq.n 800a6d8 - 800a632: d84c bhi.n 800a6ce - 800a634: 2b00 cmp r3, #0 - 800a636: d04f beq.n 800a6d8 - 800a638: 2b10 cmp r3, #16 - 800a63a: d04d beq.n 800a6d8 - 800a63c: e047 b.n 800a6ce - assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); - assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler)); - assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); - assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); - /* Configure the ETR Trigger source */ - TIM_ETR_SetConfig(htim->Instance, - 800a63e: 687b ldr r3, [r7, #4] - 800a640: 6818 ldr r0, [r3, #0] - 800a642: 683b ldr r3, [r7, #0] - 800a644: 68d9 ldr r1, [r3, #12] - 800a646: 683b ldr r3, [r7, #0] - 800a648: 689a ldr r2, [r3, #8] - 800a64a: 683b ldr r3, [r7, #0] - 800a64c: 691b ldr r3, [r3, #16] - 800a64e: f000 f9eb bl 800aa28 - sSlaveConfig->TriggerPrescaler, - sSlaveConfig->TriggerPolarity, - sSlaveConfig->TriggerFilter); - break; - 800a652: e042 b.n 800a6da - { - /* Check the parameters */ - assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); - assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); - - if (sSlaveConfig->SlaveMode == TIM_SLAVEMODE_GATED) - 800a654: 683b ldr r3, [r7, #0] - 800a656: 681b ldr r3, [r3, #0] - 800a658: 2b05 cmp r3, #5 - 800a65a: d101 bne.n 800a660 - { - return HAL_ERROR; - 800a65c: 2301 movs r3, #1 - 800a65e: e03f b.n 800a6e0 - } - - /* Disable the Channel 1: Reset the CC1E Bit */ - tmpccer = htim->Instance->CCER; - 800a660: 687b ldr r3, [r7, #4] - 800a662: 681b ldr r3, [r3, #0] - 800a664: 6a1b ldr r3, [r3, #32] - 800a666: 60fb str r3, [r7, #12] - htim->Instance->CCER &= ~TIM_CCER_CC1E; - 800a668: 687b ldr r3, [r7, #4] - 800a66a: 681b ldr r3, [r3, #0] - 800a66c: 6a1a ldr r2, [r3, #32] - 800a66e: 687b ldr r3, [r7, #4] - 800a670: 681b ldr r3, [r3, #0] - 800a672: 2101 movs r1, #1 - 800a674: 438a bics r2, r1 - 800a676: 621a str r2, [r3, #32] - tmpccmr1 = htim->Instance->CCMR1; - 800a678: 687b ldr r3, [r7, #4] - 800a67a: 681b ldr r3, [r3, #0] - 800a67c: 699b ldr r3, [r3, #24] - 800a67e: 60bb str r3, [r7, #8] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC1F; - 800a680: 68bb ldr r3, [r7, #8] - 800a682: 22f0 movs r2, #240 ; 0xf0 - 800a684: 4393 bics r3, r2 - 800a686: 60bb str r3, [r7, #8] - tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U); - 800a688: 683b ldr r3, [r7, #0] - 800a68a: 691b ldr r3, [r3, #16] - 800a68c: 011b lsls r3, r3, #4 - 800a68e: 68ba ldr r2, [r7, #8] - 800a690: 4313 orrs r3, r2 - 800a692: 60bb str r3, [r7, #8] - - /* Write to TIMx CCMR1 and CCER registers */ - htim->Instance->CCMR1 = tmpccmr1; - 800a694: 687b ldr r3, [r7, #4] - 800a696: 681b ldr r3, [r3, #0] - 800a698: 68ba ldr r2, [r7, #8] - 800a69a: 619a str r2, [r3, #24] - htim->Instance->CCER = tmpccer; - 800a69c: 687b ldr r3, [r7, #4] - 800a69e: 681b ldr r3, [r3, #0] - 800a6a0: 68fa ldr r2, [r7, #12] - 800a6a2: 621a str r2, [r3, #32] - break; - 800a6a4: e019 b.n 800a6da - assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); - assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); - assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); - - /* Configure TI1 Filter and Polarity */ - TIM_TI1_ConfigInputStage(htim->Instance, - 800a6a6: 687b ldr r3, [r7, #4] - 800a6a8: 6818 ldr r0, [r3, #0] - 800a6aa: 683b ldr r3, [r7, #0] - 800a6ac: 6899 ldr r1, [r3, #8] - 800a6ae: 683b ldr r3, [r7, #0] - 800a6b0: 691b ldr r3, [r3, #16] - 800a6b2: 001a movs r2, r3 - 800a6b4: f000 f874 bl 800a7a0 - sSlaveConfig->TriggerPolarity, - sSlaveConfig->TriggerFilter); - break; - 800a6b8: e00f b.n 800a6da - assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); - assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); - - /* Configure TI2 Filter and Polarity */ - TIM_TI2_ConfigInputStage(htim->Instance, - 800a6ba: 687b ldr r3, [r7, #4] - 800a6bc: 6818 ldr r0, [r3, #0] - 800a6be: 683b ldr r3, [r7, #0] - 800a6c0: 6899 ldr r1, [r3, #8] - 800a6c2: 683b ldr r3, [r7, #0] - 800a6c4: 691b ldr r3, [r3, #16] - 800a6c6: 001a movs r2, r3 - 800a6c8: f000 f8da bl 800a880 - sSlaveConfig->TriggerPolarity, - sSlaveConfig->TriggerFilter); - break; - 800a6cc: e005 b.n 800a6da - assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - break; - } - - default: - status = HAL_ERROR; - 800a6ce: 2317 movs r3, #23 - 800a6d0: 18fb adds r3, r7, r3 - 800a6d2: 2201 movs r2, #1 - 800a6d4: 701a strb r2, [r3, #0] - break; - 800a6d6: e000 b.n 800a6da - break; - 800a6d8: 46c0 nop ; (mov r8, r8) - } - - return status; - 800a6da: 2317 movs r3, #23 - 800a6dc: 18fb adds r3, r7, r3 - 800a6de: 781b ldrb r3, [r3, #0] -} - 800a6e0: 0018 movs r0, r3 - 800a6e2: 46bd mov sp, r7 - 800a6e4: b006 add sp, #24 - 800a6e6: bd80 pop {r7, pc} - 800a6e8: ffcfff8f .word 0xffcfff8f - 800a6ec: fffefff8 .word 0xfffefff8 - -0800a6f0 : - * (on channel2 path) is used as the input signal. Therefore CCMR1 must be - * protected against un-initialized filter and polarity values. - */ -void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, - uint32_t TIM_ICFilter) -{ - 800a6f0: b580 push {r7, lr} - 800a6f2: b086 sub sp, #24 - 800a6f4: af00 add r7, sp, #0 - 800a6f6: 60f8 str r0, [r7, #12] - 800a6f8: 60b9 str r1, [r7, #8] - 800a6fa: 607a str r2, [r7, #4] - 800a6fc: 603b str r3, [r7, #0] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 1: Reset the CC1E Bit */ - TIMx->CCER &= ~TIM_CCER_CC1E; - 800a6fe: 68fb ldr r3, [r7, #12] - 800a700: 6a1b ldr r3, [r3, #32] - 800a702: 2201 movs r2, #1 - 800a704: 4393 bics r3, r2 - 800a706: 001a movs r2, r3 - 800a708: 68fb ldr r3, [r7, #12] - 800a70a: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 800a70c: 68fb ldr r3, [r7, #12] - 800a70e: 699b ldr r3, [r3, #24] - 800a710: 617b str r3, [r7, #20] - tmpccer = TIMx->CCER; - 800a712: 68fb ldr r3, [r7, #12] - 800a714: 6a1b ldr r3, [r3, #32] - 800a716: 613b str r3, [r7, #16] - - /* Select the Input */ - if (IS_TIM_CC2_INSTANCE(TIMx) != RESET) - 800a718: 68fb ldr r3, [r7, #12] - 800a71a: 4a1e ldr r2, [pc, #120] ; (800a794 ) - 800a71c: 4293 cmp r3, r2 - 800a71e: d007 beq.n 800a730 - 800a720: 68fb ldr r3, [r7, #12] - 800a722: 4a1d ldr r2, [pc, #116] ; (800a798 ) - 800a724: 4293 cmp r3, r2 - 800a726: d003 beq.n 800a730 - 800a728: 68fb ldr r3, [r7, #12] - 800a72a: 4a1c ldr r2, [pc, #112] ; (800a79c ) - 800a72c: 4293 cmp r3, r2 - 800a72e: d101 bne.n 800a734 - 800a730: 2301 movs r3, #1 - 800a732: e000 b.n 800a736 - 800a734: 2300 movs r3, #0 - 800a736: 2b00 cmp r3, #0 - 800a738: d008 beq.n 800a74c - { - tmpccmr1 &= ~TIM_CCMR1_CC1S; - 800a73a: 697b ldr r3, [r7, #20] - 800a73c: 2203 movs r2, #3 - 800a73e: 4393 bics r3, r2 - 800a740: 617b str r3, [r7, #20] - tmpccmr1 |= TIM_ICSelection; - 800a742: 697a ldr r2, [r7, #20] - 800a744: 687b ldr r3, [r7, #4] - 800a746: 4313 orrs r3, r2 - 800a748: 617b str r3, [r7, #20] - 800a74a: e003 b.n 800a754 - } - else - { - tmpccmr1 |= TIM_CCMR1_CC1S_0; - 800a74c: 697b ldr r3, [r7, #20] - 800a74e: 2201 movs r2, #1 - 800a750: 4313 orrs r3, r2 - 800a752: 617b str r3, [r7, #20] - } - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC1F; - 800a754: 697b ldr r3, [r7, #20] - 800a756: 22f0 movs r2, #240 ; 0xf0 - 800a758: 4393 bics r3, r2 - 800a75a: 617b str r3, [r7, #20] - tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F); - 800a75c: 683b ldr r3, [r7, #0] - 800a75e: 011b lsls r3, r3, #4 - 800a760: 22ff movs r2, #255 ; 0xff - 800a762: 4013 ands r3, r2 - 800a764: 697a ldr r2, [r7, #20] - 800a766: 4313 orrs r3, r2 - 800a768: 617b str r3, [r7, #20] - - /* Select the Polarity and set the CC1E Bit */ - tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 800a76a: 693b ldr r3, [r7, #16] - 800a76c: 220a movs r2, #10 - 800a76e: 4393 bics r3, r2 - 800a770: 613b str r3, [r7, #16] - tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP)); - 800a772: 68bb ldr r3, [r7, #8] - 800a774: 220a movs r2, #10 - 800a776: 4013 ands r3, r2 - 800a778: 693a ldr r2, [r7, #16] - 800a77a: 4313 orrs r3, r2 - 800a77c: 613b str r3, [r7, #16] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1; - 800a77e: 68fb ldr r3, [r7, #12] - 800a780: 697a ldr r2, [r7, #20] - 800a782: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 800a784: 68fb ldr r3, [r7, #12] - 800a786: 693a ldr r2, [r7, #16] - 800a788: 621a str r2, [r3, #32] -} - 800a78a: 46c0 nop ; (mov r8, r8) - 800a78c: 46bd mov sp, r7 - 800a78e: b006 add sp, #24 - 800a790: bd80 pop {r7, pc} - 800a792: 46c0 nop ; (mov r8, r8) - 800a794: 40012c00 .word 0x40012c00 - 800a798: 40000400 .word 0x40000400 - 800a79c: 40014000 .word 0x40014000 - -0800a7a0 : - * @param TIM_ICFilter Specifies the Input Capture Filter. - * This parameter must be a value between 0x00 and 0x0F. - * @retval None - */ -static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) -{ - 800a7a0: b580 push {r7, lr} - 800a7a2: b086 sub sp, #24 - 800a7a4: af00 add r7, sp, #0 - 800a7a6: 60f8 str r0, [r7, #12] - 800a7a8: 60b9 str r1, [r7, #8] - 800a7aa: 607a str r2, [r7, #4] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 1: Reset the CC1E Bit */ - tmpccer = TIMx->CCER; - 800a7ac: 68fb ldr r3, [r7, #12] - 800a7ae: 6a1b ldr r3, [r3, #32] - 800a7b0: 617b str r3, [r7, #20] - TIMx->CCER &= ~TIM_CCER_CC1E; - 800a7b2: 68fb ldr r3, [r7, #12] - 800a7b4: 6a1b ldr r3, [r3, #32] - 800a7b6: 2201 movs r2, #1 - 800a7b8: 4393 bics r3, r2 - 800a7ba: 001a movs r2, r3 - 800a7bc: 68fb ldr r3, [r7, #12] - 800a7be: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 800a7c0: 68fb ldr r3, [r7, #12] - 800a7c2: 699b ldr r3, [r3, #24] - 800a7c4: 613b str r3, [r7, #16] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC1F; - 800a7c6: 693b ldr r3, [r7, #16] - 800a7c8: 22f0 movs r2, #240 ; 0xf0 - 800a7ca: 4393 bics r3, r2 - 800a7cc: 613b str r3, [r7, #16] - tmpccmr1 |= (TIM_ICFilter << 4U); - 800a7ce: 687b ldr r3, [r7, #4] - 800a7d0: 011b lsls r3, r3, #4 - 800a7d2: 693a ldr r2, [r7, #16] - 800a7d4: 4313 orrs r3, r2 - 800a7d6: 613b str r3, [r7, #16] - - /* Select the Polarity and set the CC1E Bit */ - tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 800a7d8: 697b ldr r3, [r7, #20] - 800a7da: 220a movs r2, #10 - 800a7dc: 4393 bics r3, r2 - 800a7de: 617b str r3, [r7, #20] - tmpccer |= TIM_ICPolarity; - 800a7e0: 697a ldr r2, [r7, #20] - 800a7e2: 68bb ldr r3, [r7, #8] - 800a7e4: 4313 orrs r3, r2 - 800a7e6: 617b str r3, [r7, #20] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1; - 800a7e8: 68fb ldr r3, [r7, #12] - 800a7ea: 693a ldr r2, [r7, #16] - 800a7ec: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 800a7ee: 68fb ldr r3, [r7, #12] - 800a7f0: 697a ldr r2, [r7, #20] - 800a7f2: 621a str r2, [r3, #32] -} - 800a7f4: 46c0 nop ; (mov r8, r8) - 800a7f6: 46bd mov sp, r7 - 800a7f8: b006 add sp, #24 - 800a7fa: bd80 pop {r7, pc} - -0800a7fc : - * (on channel1 path) is used as the input signal. Therefore CCMR1 must be - * protected against un-initialized filter and polarity values. - */ -static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, - uint32_t TIM_ICFilter) -{ - 800a7fc: b580 push {r7, lr} - 800a7fe: b086 sub sp, #24 - 800a800: af00 add r7, sp, #0 - 800a802: 60f8 str r0, [r7, #12] - 800a804: 60b9 str r1, [r7, #8] - 800a806: 607a str r2, [r7, #4] - 800a808: 603b str r3, [r7, #0] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 2: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC2E; - 800a80a: 68fb ldr r3, [r7, #12] - 800a80c: 6a1b ldr r3, [r3, #32] - 800a80e: 2210 movs r2, #16 - 800a810: 4393 bics r3, r2 - 800a812: 001a movs r2, r3 - 800a814: 68fb ldr r3, [r7, #12] - 800a816: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 800a818: 68fb ldr r3, [r7, #12] - 800a81a: 699b ldr r3, [r3, #24] - 800a81c: 617b str r3, [r7, #20] - tmpccer = TIMx->CCER; - 800a81e: 68fb ldr r3, [r7, #12] - 800a820: 6a1b ldr r3, [r3, #32] - 800a822: 613b str r3, [r7, #16] - - /* Select the Input */ - tmpccmr1 &= ~TIM_CCMR1_CC2S; - 800a824: 697b ldr r3, [r7, #20] - 800a826: 4a14 ldr r2, [pc, #80] ; (800a878 ) - 800a828: 4013 ands r3, r2 - 800a82a: 617b str r3, [r7, #20] - tmpccmr1 |= (TIM_ICSelection << 8U); - 800a82c: 687b ldr r3, [r7, #4] - 800a82e: 021b lsls r3, r3, #8 - 800a830: 697a ldr r2, [r7, #20] - 800a832: 4313 orrs r3, r2 - 800a834: 617b str r3, [r7, #20] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC2F; - 800a836: 697b ldr r3, [r7, #20] - 800a838: 4a10 ldr r2, [pc, #64] ; (800a87c ) - 800a83a: 4013 ands r3, r2 - 800a83c: 617b str r3, [r7, #20] - tmpccmr1 |= ((TIM_ICFilter << 12U) & TIM_CCMR1_IC2F); - 800a83e: 683b ldr r3, [r7, #0] - 800a840: 031b lsls r3, r3, #12 - 800a842: 041b lsls r3, r3, #16 - 800a844: 0c1b lsrs r3, r3, #16 - 800a846: 697a ldr r2, [r7, #20] - 800a848: 4313 orrs r3, r2 - 800a84a: 617b str r3, [r7, #20] - - /* Select the Polarity and set the CC2E Bit */ - tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 800a84c: 693b ldr r3, [r7, #16] - 800a84e: 22a0 movs r2, #160 ; 0xa0 - 800a850: 4393 bics r3, r2 - 800a852: 613b str r3, [r7, #16] - tmpccer |= ((TIM_ICPolarity << 4U) & (TIM_CCER_CC2P | TIM_CCER_CC2NP)); - 800a854: 68bb ldr r3, [r7, #8] - 800a856: 011b lsls r3, r3, #4 - 800a858: 22a0 movs r2, #160 ; 0xa0 - 800a85a: 4013 ands r3, r2 - 800a85c: 693a ldr r2, [r7, #16] - 800a85e: 4313 orrs r3, r2 - 800a860: 613b str r3, [r7, #16] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1 ; - 800a862: 68fb ldr r3, [r7, #12] - 800a864: 697a ldr r2, [r7, #20] - 800a866: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 800a868: 68fb ldr r3, [r7, #12] - 800a86a: 693a ldr r2, [r7, #16] - 800a86c: 621a str r2, [r3, #32] -} - 800a86e: 46c0 nop ; (mov r8, r8) - 800a870: 46bd mov sp, r7 - 800a872: b006 add sp, #24 - 800a874: bd80 pop {r7, pc} - 800a876: 46c0 nop ; (mov r8, r8) - 800a878: fffffcff .word 0xfffffcff - 800a87c: ffff0fff .word 0xffff0fff - -0800a880 : - * @param TIM_ICFilter Specifies the Input Capture Filter. - * This parameter must be a value between 0x00 and 0x0F. - * @retval None - */ -static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) -{ - 800a880: b580 push {r7, lr} - 800a882: b086 sub sp, #24 - 800a884: af00 add r7, sp, #0 - 800a886: 60f8 str r0, [r7, #12] - 800a888: 60b9 str r1, [r7, #8] - 800a88a: 607a str r2, [r7, #4] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 2: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC2E; - 800a88c: 68fb ldr r3, [r7, #12] - 800a88e: 6a1b ldr r3, [r3, #32] - 800a890: 2210 movs r2, #16 - 800a892: 4393 bics r3, r2 - 800a894: 001a movs r2, r3 - 800a896: 68fb ldr r3, [r7, #12] - 800a898: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 800a89a: 68fb ldr r3, [r7, #12] - 800a89c: 699b ldr r3, [r3, #24] - 800a89e: 617b str r3, [r7, #20] - tmpccer = TIMx->CCER; - 800a8a0: 68fb ldr r3, [r7, #12] - 800a8a2: 6a1b ldr r3, [r3, #32] - 800a8a4: 613b str r3, [r7, #16] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC2F; - 800a8a6: 697b ldr r3, [r7, #20] - 800a8a8: 4a0d ldr r2, [pc, #52] ; (800a8e0 ) - 800a8aa: 4013 ands r3, r2 - 800a8ac: 617b str r3, [r7, #20] - tmpccmr1 |= (TIM_ICFilter << 12U); - 800a8ae: 687b ldr r3, [r7, #4] - 800a8b0: 031b lsls r3, r3, #12 - 800a8b2: 697a ldr r2, [r7, #20] - 800a8b4: 4313 orrs r3, r2 - 800a8b6: 617b str r3, [r7, #20] - - /* Select the Polarity and set the CC2E Bit */ - tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 800a8b8: 693b ldr r3, [r7, #16] - 800a8ba: 22a0 movs r2, #160 ; 0xa0 - 800a8bc: 4393 bics r3, r2 - 800a8be: 613b str r3, [r7, #16] - tmpccer |= (TIM_ICPolarity << 4U); - 800a8c0: 68bb ldr r3, [r7, #8] - 800a8c2: 011b lsls r3, r3, #4 - 800a8c4: 693a ldr r2, [r7, #16] - 800a8c6: 4313 orrs r3, r2 - 800a8c8: 613b str r3, [r7, #16] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1 ; - 800a8ca: 68fb ldr r3, [r7, #12] - 800a8cc: 697a ldr r2, [r7, #20] - 800a8ce: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 800a8d0: 68fb ldr r3, [r7, #12] - 800a8d2: 693a ldr r2, [r7, #16] - 800a8d4: 621a str r2, [r3, #32] -} - 800a8d6: 46c0 nop ; (mov r8, r8) - 800a8d8: 46bd mov sp, r7 - 800a8da: b006 add sp, #24 - 800a8dc: bd80 pop {r7, pc} - 800a8de: 46c0 nop ; (mov r8, r8) - 800a8e0: ffff0fff .word 0xffff0fff - -0800a8e4 : - * (on channel1 path) is used as the input signal. Therefore CCMR2 must be - * protected against un-initialized filter and polarity values. - */ -static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, - uint32_t TIM_ICFilter) -{ - 800a8e4: b580 push {r7, lr} - 800a8e6: b086 sub sp, #24 - 800a8e8: af00 add r7, sp, #0 - 800a8ea: 60f8 str r0, [r7, #12] - 800a8ec: 60b9 str r1, [r7, #8] - 800a8ee: 607a str r2, [r7, #4] - 800a8f0: 603b str r3, [r7, #0] - uint32_t tmpccmr2; - uint32_t tmpccer; - - /* Disable the Channel 3: Reset the CC3E Bit */ - TIMx->CCER &= ~TIM_CCER_CC3E; - 800a8f2: 68fb ldr r3, [r7, #12] - 800a8f4: 6a1b ldr r3, [r3, #32] - 800a8f6: 4a19 ldr r2, [pc, #100] ; (800a95c ) - 800a8f8: 401a ands r2, r3 - 800a8fa: 68fb ldr r3, [r7, #12] - 800a8fc: 621a str r2, [r3, #32] - tmpccmr2 = TIMx->CCMR2; - 800a8fe: 68fb ldr r3, [r7, #12] - 800a900: 69db ldr r3, [r3, #28] - 800a902: 617b str r3, [r7, #20] - tmpccer = TIMx->CCER; - 800a904: 68fb ldr r3, [r7, #12] - 800a906: 6a1b ldr r3, [r3, #32] - 800a908: 613b str r3, [r7, #16] - - /* Select the Input */ - tmpccmr2 &= ~TIM_CCMR2_CC3S; - 800a90a: 697b ldr r3, [r7, #20] - 800a90c: 2203 movs r2, #3 - 800a90e: 4393 bics r3, r2 - 800a910: 617b str r3, [r7, #20] - tmpccmr2 |= TIM_ICSelection; - 800a912: 697a ldr r2, [r7, #20] - 800a914: 687b ldr r3, [r7, #4] - 800a916: 4313 orrs r3, r2 - 800a918: 617b str r3, [r7, #20] - - /* Set the filter */ - tmpccmr2 &= ~TIM_CCMR2_IC3F; - 800a91a: 697b ldr r3, [r7, #20] - 800a91c: 22f0 movs r2, #240 ; 0xf0 - 800a91e: 4393 bics r3, r2 - 800a920: 617b str r3, [r7, #20] - tmpccmr2 |= ((TIM_ICFilter << 4U) & TIM_CCMR2_IC3F); - 800a922: 683b ldr r3, [r7, #0] - 800a924: 011b lsls r3, r3, #4 - 800a926: 22ff movs r2, #255 ; 0xff - 800a928: 4013 ands r3, r2 - 800a92a: 697a ldr r2, [r7, #20] - 800a92c: 4313 orrs r3, r2 - 800a92e: 617b str r3, [r7, #20] - - /* Select the Polarity and set the CC3E Bit */ - tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP); - 800a930: 693b ldr r3, [r7, #16] - 800a932: 4a0b ldr r2, [pc, #44] ; (800a960 ) - 800a934: 4013 ands r3, r2 - 800a936: 613b str r3, [r7, #16] - tmpccer |= ((TIM_ICPolarity << 8U) & (TIM_CCER_CC3P | TIM_CCER_CC3NP)); - 800a938: 68bb ldr r3, [r7, #8] - 800a93a: 021a lsls r2, r3, #8 - 800a93c: 23a0 movs r3, #160 ; 0xa0 - 800a93e: 011b lsls r3, r3, #4 - 800a940: 4013 ands r3, r2 - 800a942: 693a ldr r2, [r7, #16] - 800a944: 4313 orrs r3, r2 - 800a946: 613b str r3, [r7, #16] - - /* Write to TIMx CCMR2 and CCER registers */ - TIMx->CCMR2 = tmpccmr2; - 800a948: 68fb ldr r3, [r7, #12] - 800a94a: 697a ldr r2, [r7, #20] - 800a94c: 61da str r2, [r3, #28] - TIMx->CCER = tmpccer; - 800a94e: 68fb ldr r3, [r7, #12] - 800a950: 693a ldr r2, [r7, #16] - 800a952: 621a str r2, [r3, #32] -} - 800a954: 46c0 nop ; (mov r8, r8) - 800a956: 46bd mov sp, r7 - 800a958: b006 add sp, #24 - 800a95a: bd80 pop {r7, pc} - 800a95c: fffffeff .word 0xfffffeff - 800a960: fffff5ff .word 0xfffff5ff - -0800a964 : - * protected against un-initialized filter and polarity values. - * @retval None - */ -static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, - uint32_t TIM_ICFilter) -{ - 800a964: b580 push {r7, lr} - 800a966: b086 sub sp, #24 - 800a968: af00 add r7, sp, #0 - 800a96a: 60f8 str r0, [r7, #12] - 800a96c: 60b9 str r1, [r7, #8] - 800a96e: 607a str r2, [r7, #4] - 800a970: 603b str r3, [r7, #0] - uint32_t tmpccmr2; - uint32_t tmpccer; - - /* Disable the Channel 4: Reset the CC4E Bit */ - TIMx->CCER &= ~TIM_CCER_CC4E; - 800a972: 68fb ldr r3, [r7, #12] - 800a974: 6a1b ldr r3, [r3, #32] - 800a976: 4a1a ldr r2, [pc, #104] ; (800a9e0 ) - 800a978: 401a ands r2, r3 - 800a97a: 68fb ldr r3, [r7, #12] - 800a97c: 621a str r2, [r3, #32] - tmpccmr2 = TIMx->CCMR2; - 800a97e: 68fb ldr r3, [r7, #12] - 800a980: 69db ldr r3, [r3, #28] - 800a982: 617b str r3, [r7, #20] - tmpccer = TIMx->CCER; - 800a984: 68fb ldr r3, [r7, #12] - 800a986: 6a1b ldr r3, [r3, #32] - 800a988: 613b str r3, [r7, #16] - - /* Select the Input */ - tmpccmr2 &= ~TIM_CCMR2_CC4S; - 800a98a: 697b ldr r3, [r7, #20] - 800a98c: 4a15 ldr r2, [pc, #84] ; (800a9e4 ) - 800a98e: 4013 ands r3, r2 - 800a990: 617b str r3, [r7, #20] - tmpccmr2 |= (TIM_ICSelection << 8U); - 800a992: 687b ldr r3, [r7, #4] - 800a994: 021b lsls r3, r3, #8 - 800a996: 697a ldr r2, [r7, #20] - 800a998: 4313 orrs r3, r2 - 800a99a: 617b str r3, [r7, #20] - - /* Set the filter */ - tmpccmr2 &= ~TIM_CCMR2_IC4F; - 800a99c: 697b ldr r3, [r7, #20] - 800a99e: 4a12 ldr r2, [pc, #72] ; (800a9e8 ) - 800a9a0: 4013 ands r3, r2 - 800a9a2: 617b str r3, [r7, #20] - tmpccmr2 |= ((TIM_ICFilter << 12U) & TIM_CCMR2_IC4F); - 800a9a4: 683b ldr r3, [r7, #0] - 800a9a6: 031b lsls r3, r3, #12 - 800a9a8: 041b lsls r3, r3, #16 - 800a9aa: 0c1b lsrs r3, r3, #16 - 800a9ac: 697a ldr r2, [r7, #20] - 800a9ae: 4313 orrs r3, r2 - 800a9b0: 617b str r3, [r7, #20] - - /* Select the Polarity and set the CC4E Bit */ - tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP); - 800a9b2: 693b ldr r3, [r7, #16] - 800a9b4: 4a0d ldr r2, [pc, #52] ; (800a9ec ) - 800a9b6: 4013 ands r3, r2 - 800a9b8: 613b str r3, [r7, #16] - tmpccer |= ((TIM_ICPolarity << 12U) & (TIM_CCER_CC4P | TIM_CCER_CC4NP)); - 800a9ba: 68bb ldr r3, [r7, #8] - 800a9bc: 031a lsls r2, r3, #12 - 800a9be: 23a0 movs r3, #160 ; 0xa0 - 800a9c0: 021b lsls r3, r3, #8 - 800a9c2: 4013 ands r3, r2 - 800a9c4: 693a ldr r2, [r7, #16] - 800a9c6: 4313 orrs r3, r2 - 800a9c8: 613b str r3, [r7, #16] - - /* Write to TIMx CCMR2 and CCER registers */ - TIMx->CCMR2 = tmpccmr2; - 800a9ca: 68fb ldr r3, [r7, #12] - 800a9cc: 697a ldr r2, [r7, #20] - 800a9ce: 61da str r2, [r3, #28] - TIMx->CCER = tmpccer ; - 800a9d0: 68fb ldr r3, [r7, #12] - 800a9d2: 693a ldr r2, [r7, #16] - 800a9d4: 621a str r2, [r3, #32] -} - 800a9d6: 46c0 nop ; (mov r8, r8) - 800a9d8: 46bd mov sp, r7 - 800a9da: b006 add sp, #24 - 800a9dc: bd80 pop {r7, pc} - 800a9de: 46c0 nop ; (mov r8, r8) - 800a9e0: ffffefff .word 0xffffefff - 800a9e4: fffffcff .word 0xfffffcff - 800a9e8: ffff0fff .word 0xffff0fff - 800a9ec: ffff5fff .word 0xffff5fff - -0800a9f0 : - * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 - * @arg TIM_TS_ETRF: External Trigger input - * @retval None - */ -static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) -{ - 800a9f0: b580 push {r7, lr} - 800a9f2: b084 sub sp, #16 - 800a9f4: af00 add r7, sp, #0 - 800a9f6: 6078 str r0, [r7, #4] - 800a9f8: 6039 str r1, [r7, #0] - uint32_t tmpsmcr; - - /* Get the TIMx SMCR register value */ - tmpsmcr = TIMx->SMCR; - 800a9fa: 687b ldr r3, [r7, #4] - 800a9fc: 689b ldr r3, [r3, #8] - 800a9fe: 60fb str r3, [r7, #12] - /* Reset the TS Bits */ - tmpsmcr &= ~TIM_SMCR_TS; - 800aa00: 68fb ldr r3, [r7, #12] - 800aa02: 4a08 ldr r2, [pc, #32] ; (800aa24 ) - 800aa04: 4013 ands r3, r2 - 800aa06: 60fb str r3, [r7, #12] - /* Set the Input Trigger source and the slave mode*/ - tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 800aa08: 683a ldr r2, [r7, #0] - 800aa0a: 68fb ldr r3, [r7, #12] - 800aa0c: 4313 orrs r3, r2 - 800aa0e: 2207 movs r2, #7 - 800aa10: 4313 orrs r3, r2 - 800aa12: 60fb str r3, [r7, #12] - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; - 800aa14: 687b ldr r3, [r7, #4] - 800aa16: 68fa ldr r2, [r7, #12] - 800aa18: 609a str r2, [r3, #8] -} - 800aa1a: 46c0 nop ; (mov r8, r8) - 800aa1c: 46bd mov sp, r7 - 800aa1e: b004 add sp, #16 - 800aa20: bd80 pop {r7, pc} - 800aa22: 46c0 nop ; (mov r8, r8) - 800aa24: ffcfff8f .word 0xffcfff8f - -0800aa28 : - * This parameter must be a value between 0x00 and 0x0F - * @retval None - */ -void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, - uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) -{ - 800aa28: b580 push {r7, lr} - 800aa2a: b086 sub sp, #24 - 800aa2c: af00 add r7, sp, #0 - 800aa2e: 60f8 str r0, [r7, #12] - 800aa30: 60b9 str r1, [r7, #8] - 800aa32: 607a str r2, [r7, #4] - 800aa34: 603b str r3, [r7, #0] - uint32_t tmpsmcr; - - tmpsmcr = TIMx->SMCR; - 800aa36: 68fb ldr r3, [r7, #12] - 800aa38: 689b ldr r3, [r3, #8] - 800aa3a: 617b str r3, [r7, #20] - - /* Reset the ETR Bits */ - tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 800aa3c: 697b ldr r3, [r7, #20] - 800aa3e: 4a09 ldr r2, [pc, #36] ; (800aa64 ) - 800aa40: 4013 ands r3, r2 - 800aa42: 617b str r3, [r7, #20] - - /* Set the Prescaler, the Filter value and the Polarity */ - tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 800aa44: 683b ldr r3, [r7, #0] - 800aa46: 021a lsls r2, r3, #8 - 800aa48: 687b ldr r3, [r7, #4] - 800aa4a: 431a orrs r2, r3 - 800aa4c: 68bb ldr r3, [r7, #8] - 800aa4e: 4313 orrs r3, r2 - 800aa50: 697a ldr r2, [r7, #20] - 800aa52: 4313 orrs r3, r2 - 800aa54: 617b str r3, [r7, #20] - - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; - 800aa56: 68fb ldr r3, [r7, #12] - 800aa58: 697a ldr r2, [r7, #20] - 800aa5a: 609a str r2, [r3, #8] -} - 800aa5c: 46c0 nop ; (mov r8, r8) - 800aa5e: 46bd mov sp, r7 - 800aa60: b006 add sp, #24 - 800aa62: bd80 pop {r7, pc} - 800aa64: ffff00ff .word 0xffff00ff - -0800aa68 : - * @param ChannelState specifies the TIM Channel CCxE bit new state. - * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. - * @retval None - */ -void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) -{ - 800aa68: b580 push {r7, lr} - 800aa6a: b086 sub sp, #24 - 800aa6c: af00 add r7, sp, #0 - 800aa6e: 60f8 str r0, [r7, #12] - 800aa70: 60b9 str r1, [r7, #8] - 800aa72: 607a str r2, [r7, #4] - - /* Check the parameters */ - assert_param(IS_TIM_CC1_INSTANCE(TIMx)); - assert_param(IS_TIM_CHANNELS(Channel)); - - tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ - 800aa74: 68bb ldr r3, [r7, #8] - 800aa76: 221f movs r2, #31 - 800aa78: 4013 ands r3, r2 - 800aa7a: 2201 movs r2, #1 - 800aa7c: 409a lsls r2, r3 - 800aa7e: 0013 movs r3, r2 - 800aa80: 617b str r3, [r7, #20] - - /* Reset the CCxE Bit */ - TIMx->CCER &= ~tmp; - 800aa82: 68fb ldr r3, [r7, #12] - 800aa84: 6a1b ldr r3, [r3, #32] - 800aa86: 697a ldr r2, [r7, #20] - 800aa88: 43d2 mvns r2, r2 - 800aa8a: 401a ands r2, r3 - 800aa8c: 68fb ldr r3, [r7, #12] - 800aa8e: 621a str r2, [r3, #32] - - /* Set or reset the CCxE Bit */ - TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ - 800aa90: 68fb ldr r3, [r7, #12] - 800aa92: 6a1a ldr r2, [r3, #32] - 800aa94: 68bb ldr r3, [r7, #8] - 800aa96: 211f movs r1, #31 - 800aa98: 400b ands r3, r1 - 800aa9a: 6879 ldr r1, [r7, #4] - 800aa9c: 4099 lsls r1, r3 - 800aa9e: 000b movs r3, r1 - 800aaa0: 431a orrs r2, r3 - 800aaa2: 68fb ldr r3, [r7, #12] - 800aaa4: 621a str r2, [r3, #32] -} - 800aaa6: 46c0 nop ; (mov r8, r8) - 800aaa8: 46bd mov sp, r7 - 800aaaa: b006 add sp, #24 - 800aaac: bd80 pop {r7, pc} - ... - -0800aab0 : - * mode. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, - const TIM_MasterConfigTypeDef *sMasterConfig) -{ - 800aab0: b580 push {r7, lr} - 800aab2: b084 sub sp, #16 - 800aab4: af00 add r7, sp, #0 - 800aab6: 6078 str r0, [r7, #4] - 800aab8: 6039 str r1, [r7, #0] - assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); - assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); - assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); - - /* Check input state */ - __HAL_LOCK(htim); - 800aaba: 687b ldr r3, [r7, #4] - 800aabc: 223c movs r2, #60 ; 0x3c - 800aabe: 5c9b ldrb r3, [r3, r2] - 800aac0: 2b01 cmp r3, #1 - 800aac2: d101 bne.n 800aac8 - 800aac4: 2302 movs r3, #2 - 800aac6: e04f b.n 800ab68 - 800aac8: 687b ldr r3, [r7, #4] - 800aaca: 223c movs r2, #60 ; 0x3c - 800aacc: 2101 movs r1, #1 - 800aace: 5499 strb r1, [r3, r2] - - /* Change the handler state */ - htim->State = HAL_TIM_STATE_BUSY; - 800aad0: 687b ldr r3, [r7, #4] - 800aad2: 223d movs r2, #61 ; 0x3d - 800aad4: 2102 movs r1, #2 - 800aad6: 5499 strb r1, [r3, r2] - - /* Get the TIMx CR2 register value */ - tmpcr2 = htim->Instance->CR2; - 800aad8: 687b ldr r3, [r7, #4] - 800aada: 681b ldr r3, [r3, #0] - 800aadc: 685b ldr r3, [r3, #4] - 800aade: 60fb str r3, [r7, #12] - - /* Get the TIMx SMCR register value */ - tmpsmcr = htim->Instance->SMCR; - 800aae0: 687b ldr r3, [r7, #4] - 800aae2: 681b ldr r3, [r3, #0] - 800aae4: 689b ldr r3, [r3, #8] - 800aae6: 60bb str r3, [r7, #8] - - /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */ - if (IS_TIM_TRGO2_INSTANCE(htim->Instance)) - 800aae8: 687b ldr r3, [r7, #4] - 800aaea: 681b ldr r3, [r3, #0] - 800aaec: 4a20 ldr r2, [pc, #128] ; (800ab70 ) - 800aaee: 4293 cmp r3, r2 - 800aaf0: d108 bne.n 800ab04 - { - /* Check the parameters */ - assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2)); - - /* Clear the MMS2 bits */ - tmpcr2 &= ~TIM_CR2_MMS2; - 800aaf2: 68fb ldr r3, [r7, #12] - 800aaf4: 4a1f ldr r2, [pc, #124] ; (800ab74 ) - 800aaf6: 4013 ands r3, r2 - 800aaf8: 60fb str r3, [r7, #12] - /* Select the TRGO2 source*/ - tmpcr2 |= sMasterConfig->MasterOutputTrigger2; - 800aafa: 683b ldr r3, [r7, #0] - 800aafc: 685b ldr r3, [r3, #4] - 800aafe: 68fa ldr r2, [r7, #12] - 800ab00: 4313 orrs r3, r2 - 800ab02: 60fb str r3, [r7, #12] - } - - /* Reset the MMS Bits */ - tmpcr2 &= ~TIM_CR2_MMS; - 800ab04: 68fb ldr r3, [r7, #12] - 800ab06: 2270 movs r2, #112 ; 0x70 - 800ab08: 4393 bics r3, r2 - 800ab0a: 60fb str r3, [r7, #12] - /* Select the TRGO source */ - tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 800ab0c: 683b ldr r3, [r7, #0] - 800ab0e: 681b ldr r3, [r3, #0] - 800ab10: 68fa ldr r2, [r7, #12] - 800ab12: 4313 orrs r3, r2 - 800ab14: 60fb str r3, [r7, #12] - - /* Update TIMx CR2 */ - htim->Instance->CR2 = tmpcr2; - 800ab16: 687b ldr r3, [r7, #4] - 800ab18: 681b ldr r3, [r3, #0] - 800ab1a: 68fa ldr r2, [r7, #12] - 800ab1c: 605a str r2, [r3, #4] - - if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 800ab1e: 687b ldr r3, [r7, #4] - 800ab20: 681b ldr r3, [r3, #0] - 800ab22: 4a13 ldr r2, [pc, #76] ; (800ab70 ) - 800ab24: 4293 cmp r3, r2 - 800ab26: d009 beq.n 800ab3c - 800ab28: 687b ldr r3, [r7, #4] - 800ab2a: 681b ldr r3, [r3, #0] - 800ab2c: 4a12 ldr r2, [pc, #72] ; (800ab78 ) - 800ab2e: 4293 cmp r3, r2 - 800ab30: d004 beq.n 800ab3c - 800ab32: 687b ldr r3, [r7, #4] - 800ab34: 681b ldr r3, [r3, #0] - 800ab36: 4a11 ldr r2, [pc, #68] ; (800ab7c ) - 800ab38: 4293 cmp r3, r2 - 800ab3a: d10c bne.n 800ab56 - { - /* Reset the MSM Bit */ - tmpsmcr &= ~TIM_SMCR_MSM; - 800ab3c: 68bb ldr r3, [r7, #8] - 800ab3e: 2280 movs r2, #128 ; 0x80 - 800ab40: 4393 bics r3, r2 - 800ab42: 60bb str r3, [r7, #8] - /* Set master mode */ - tmpsmcr |= sMasterConfig->MasterSlaveMode; - 800ab44: 683b ldr r3, [r7, #0] - 800ab46: 689b ldr r3, [r3, #8] - 800ab48: 68ba ldr r2, [r7, #8] - 800ab4a: 4313 orrs r3, r2 - 800ab4c: 60bb str r3, [r7, #8] - - /* Update TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 800ab4e: 687b ldr r3, [r7, #4] - 800ab50: 681b ldr r3, [r3, #0] - 800ab52: 68ba ldr r2, [r7, #8] - 800ab54: 609a str r2, [r3, #8] - } - - /* Change the htim state */ - htim->State = HAL_TIM_STATE_READY; - 800ab56: 687b ldr r3, [r7, #4] - 800ab58: 223d movs r2, #61 ; 0x3d - 800ab5a: 2101 movs r1, #1 - 800ab5c: 5499 strb r1, [r3, r2] - - __HAL_UNLOCK(htim); - 800ab5e: 687b ldr r3, [r7, #4] - 800ab60: 223c movs r2, #60 ; 0x3c - 800ab62: 2100 movs r1, #0 - 800ab64: 5499 strb r1, [r3, r2] - - return HAL_OK; - 800ab66: 2300 movs r3, #0 -} - 800ab68: 0018 movs r0, r3 - 800ab6a: 46bd mov sp, r7 - 800ab6c: b004 add sp, #16 - 800ab6e: bd80 pop {r7, pc} - 800ab70: 40012c00 .word 0x40012c00 - 800ab74: ff0fffff .word 0xff0fffff - 800ab78: 40000400 .word 0x40000400 - 800ab7c: 40014000 .word 0x40014000 - -0800ab80 : - * interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, - const TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig) -{ - 800ab80: b580 push {r7, lr} - 800ab82: b084 sub sp, #16 - 800ab84: af00 add r7, sp, #0 - 800ab86: 6078 str r0, [r7, #4] - 800ab88: 6039 str r1, [r7, #0] - /* Keep this variable initialized to 0 as it is used to configure BDTR register */ - uint32_t tmpbdtr = 0U; - 800ab8a: 2300 movs r3, #0 - 800ab8c: 60fb str r3, [r7, #12] - assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity)); - assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->BreakFilter)); - assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput)); - - /* Check input state */ - __HAL_LOCK(htim); - 800ab8e: 687b ldr r3, [r7, #4] - 800ab90: 223c movs r2, #60 ; 0x3c - 800ab92: 5c9b ldrb r3, [r3, r2] - 800ab94: 2b01 cmp r3, #1 - 800ab96: d101 bne.n 800ab9c - 800ab98: 2302 movs r3, #2 - 800ab9a: e079 b.n 800ac90 - 800ab9c: 687b ldr r3, [r7, #4] - 800ab9e: 223c movs r2, #60 ; 0x3c - 800aba0: 2101 movs r1, #1 - 800aba2: 5499 strb r1, [r3, r2] - - /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, - the OSSI State, the dead time value and the Automatic Output Enable Bit */ - - /* Set the BDTR bits */ - MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, sBreakDeadTimeConfig->DeadTime); - 800aba4: 68fb ldr r3, [r7, #12] - 800aba6: 22ff movs r2, #255 ; 0xff - 800aba8: 4393 bics r3, r2 - 800abaa: 001a movs r2, r3 - 800abac: 683b ldr r3, [r7, #0] - 800abae: 68db ldr r3, [r3, #12] - 800abb0: 4313 orrs r3, r2 - 800abb2: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel); - 800abb4: 68fb ldr r3, [r7, #12] - 800abb6: 4a38 ldr r2, [pc, #224] ; (800ac98 ) - 800abb8: 401a ands r2, r3 - 800abba: 683b ldr r3, [r7, #0] - 800abbc: 689b ldr r3, [r3, #8] - 800abbe: 4313 orrs r3, r2 - 800abc0: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); - 800abc2: 68fb ldr r3, [r7, #12] - 800abc4: 4a35 ldr r2, [pc, #212] ; (800ac9c ) - 800abc6: 401a ands r2, r3 - 800abc8: 683b ldr r3, [r7, #0] - 800abca: 685b ldr r3, [r3, #4] - 800abcc: 4313 orrs r3, r2 - 800abce: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); - 800abd0: 68fb ldr r3, [r7, #12] - 800abd2: 4a33 ldr r2, [pc, #204] ; (800aca0 ) - 800abd4: 401a ands r2, r3 - 800abd6: 683b ldr r3, [r7, #0] - 800abd8: 681b ldr r3, [r3, #0] - 800abda: 4313 orrs r3, r2 - 800abdc: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); - 800abde: 68fb ldr r3, [r7, #12] - 800abe0: 4a30 ldr r2, [pc, #192] ; (800aca4 ) - 800abe2: 401a ands r2, r3 - 800abe4: 683b ldr r3, [r7, #0] - 800abe6: 691b ldr r3, [r3, #16] - 800abe8: 4313 orrs r3, r2 - 800abea: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); - 800abec: 68fb ldr r3, [r7, #12] - 800abee: 4a2e ldr r2, [pc, #184] ; (800aca8 ) - 800abf0: 401a ands r2, r3 - 800abf2: 683b ldr r3, [r7, #0] - 800abf4: 695b ldr r3, [r3, #20] - 800abf6: 4313 orrs r3, r2 - 800abf8: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); - 800abfa: 68fb ldr r3, [r7, #12] - 800abfc: 4a2b ldr r2, [pc, #172] ; (800acac ) - 800abfe: 401a ands r2, r3 - 800ac00: 683b ldr r3, [r7, #0] - 800ac02: 6b1b ldr r3, [r3, #48] ; 0x30 - 800ac04: 4313 orrs r3, r2 - 800ac06: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos)); - 800ac08: 68fb ldr r3, [r7, #12] - 800ac0a: 4a29 ldr r2, [pc, #164] ; (800acb0 ) - 800ac0c: 401a ands r2, r3 - 800ac0e: 683b ldr r3, [r7, #0] - 800ac10: 699b ldr r3, [r3, #24] - 800ac12: 041b lsls r3, r3, #16 - 800ac14: 4313 orrs r3, r2 - 800ac16: 60fb str r3, [r7, #12] - - if (IS_TIM_ADVANCED_INSTANCE(htim->Instance)) - 800ac18: 687b ldr r3, [r7, #4] - 800ac1a: 681b ldr r3, [r3, #0] - 800ac1c: 4a25 ldr r2, [pc, #148] ; (800acb4 ) - 800ac1e: 4293 cmp r3, r2 - 800ac20: d106 bne.n 800ac30 - { - /* Check the parameters */ - assert_param(IS_TIM_BREAK_AFMODE(sBreakDeadTimeConfig->BreakAFMode)); - - /* Set BREAK AF mode */ - MODIFY_REG(tmpbdtr, TIM_BDTR_BKBID, sBreakDeadTimeConfig->BreakAFMode); - 800ac22: 68fb ldr r3, [r7, #12] - 800ac24: 4a24 ldr r2, [pc, #144] ; (800acb8 ) - 800ac26: 401a ands r2, r3 - 800ac28: 683b ldr r3, [r7, #0] - 800ac2a: 69db ldr r3, [r3, #28] - 800ac2c: 4313 orrs r3, r2 - 800ac2e: 60fb str r3, [r7, #12] - } - - if (IS_TIM_BKIN2_INSTANCE(htim->Instance)) - 800ac30: 687b ldr r3, [r7, #4] - 800ac32: 681b ldr r3, [r3, #0] - 800ac34: 4a1f ldr r2, [pc, #124] ; (800acb4 ) - 800ac36: 4293 cmp r3, r2 - 800ac38: d121 bne.n 800ac7e - assert_param(IS_TIM_BREAK2_STATE(sBreakDeadTimeConfig->Break2State)); - assert_param(IS_TIM_BREAK2_POLARITY(sBreakDeadTimeConfig->Break2Polarity)); - assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->Break2Filter)); - - /* Set the BREAK2 input related BDTR bits */ - MODIFY_REG(tmpbdtr, TIM_BDTR_BK2F, (sBreakDeadTimeConfig->Break2Filter << TIM_BDTR_BK2F_Pos)); - 800ac3a: 68fb ldr r3, [r7, #12] - 800ac3c: 4a1f ldr r2, [pc, #124] ; (800acbc ) - 800ac3e: 401a ands r2, r3 - 800ac40: 683b ldr r3, [r7, #0] - 800ac42: 6a9b ldr r3, [r3, #40] ; 0x28 - 800ac44: 051b lsls r3, r3, #20 - 800ac46: 4313 orrs r3, r2 - 800ac48: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, sBreakDeadTimeConfig->Break2State); - 800ac4a: 68fb ldr r3, [r7, #12] - 800ac4c: 4a1c ldr r2, [pc, #112] ; (800acc0 ) - 800ac4e: 401a ands r2, r3 - 800ac50: 683b ldr r3, [r7, #0] - 800ac52: 6a1b ldr r3, [r3, #32] - 800ac54: 4313 orrs r3, r2 - 800ac56: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity); - 800ac58: 68fb ldr r3, [r7, #12] - 800ac5a: 4a1a ldr r2, [pc, #104] ; (800acc4 ) - 800ac5c: 401a ands r2, r3 - 800ac5e: 683b ldr r3, [r7, #0] - 800ac60: 6a5b ldr r3, [r3, #36] ; 0x24 - 800ac62: 4313 orrs r3, r2 - 800ac64: 60fb str r3, [r7, #12] - - if (IS_TIM_ADVANCED_INSTANCE(htim->Instance)) - 800ac66: 687b ldr r3, [r7, #4] - 800ac68: 681b ldr r3, [r3, #0] - 800ac6a: 4a12 ldr r2, [pc, #72] ; (800acb4 ) - 800ac6c: 4293 cmp r3, r2 - 800ac6e: d106 bne.n 800ac7e - { - /* Check the parameters */ - assert_param(IS_TIM_BREAK2_AFMODE(sBreakDeadTimeConfig->Break2AFMode)); - - /* Set BREAK2 AF mode */ - MODIFY_REG(tmpbdtr, TIM_BDTR_BK2BID, sBreakDeadTimeConfig->Break2AFMode); - 800ac70: 68fb ldr r3, [r7, #12] - 800ac72: 4a15 ldr r2, [pc, #84] ; (800acc8 ) - 800ac74: 401a ands r2, r3 - 800ac76: 683b ldr r3, [r7, #0] - 800ac78: 6adb ldr r3, [r3, #44] ; 0x2c - 800ac7a: 4313 orrs r3, r2 - 800ac7c: 60fb str r3, [r7, #12] - } - } - - /* Set TIMx_BDTR */ - htim->Instance->BDTR = tmpbdtr; - 800ac7e: 687b ldr r3, [r7, #4] - 800ac80: 681b ldr r3, [r3, #0] - 800ac82: 68fa ldr r2, [r7, #12] - 800ac84: 645a str r2, [r3, #68] ; 0x44 - - __HAL_UNLOCK(htim); - 800ac86: 687b ldr r3, [r7, #4] - 800ac88: 223c movs r2, #60 ; 0x3c - 800ac8a: 2100 movs r1, #0 - 800ac8c: 5499 strb r1, [r3, r2] - - return HAL_OK; - 800ac8e: 2300 movs r3, #0 -} - 800ac90: 0018 movs r0, r3 - 800ac92: 46bd mov sp, r7 - 800ac94: b004 add sp, #16 - 800ac96: bd80 pop {r7, pc} - 800ac98: fffffcff .word 0xfffffcff - 800ac9c: fffffbff .word 0xfffffbff - 800aca0: fffff7ff .word 0xfffff7ff - 800aca4: ffffefff .word 0xffffefff - 800aca8: ffffdfff .word 0xffffdfff - 800acac: ffffbfff .word 0xffffbfff - 800acb0: fff0ffff .word 0xfff0ffff - 800acb4: 40012c00 .word 0x40012c00 - 800acb8: efffffff .word 0xefffffff - 800acbc: ff0fffff .word 0xff0fffff - 800acc0: feffffff .word 0xfeffffff - 800acc4: fdffffff .word 0xfdffffff - 800acc8: dfffffff .word 0xdfffffff - -0800accc : - * @brief Hall commutation changed callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) -{ - 800accc: b580 push {r7, lr} - 800acce: b082 sub sp, #8 - 800acd0: af00 add r7, sp, #0 - 800acd2: 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 - */ -} - 800acd4: 46c0 nop ; (mov r8, r8) - 800acd6: 46bd mov sp, r7 - 800acd8: b002 add sp, #8 - 800acda: bd80 pop {r7, pc} - -0800acdc : - * @brief Hall Break detection callback in non-blocking mode - * @param htim TIM handle - * @retval None - */ -__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) -{ - 800acdc: b580 push {r7, lr} - 800acde: b082 sub sp, #8 - 800ace0: af00 add r7, sp, #0 - 800ace2: 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 - */ -} - 800ace4: 46c0 nop ; (mov r8, r8) - 800ace6: 46bd mov sp, r7 - 800ace8: b002 add sp, #8 - 800acea: bd80 pop {r7, pc} - -0800acec : - * @brief Hall Break2 detection callback in non blocking mode - * @param htim: TIM handle - * @retval None - */ -__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim) -{ - 800acec: b580 push {r7, lr} - 800acee: b082 sub sp, #8 - 800acf0: af00 add r7, sp, #0 - 800acf2: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function Should not be modified, when the callback is needed, - the HAL_TIMEx_Break2Callback could be implemented in the user file - */ -} - 800acf4: 46c0 nop ; (mov r8, r8) - 800acf6: 46bd mov sp, r7 - 800acf8: b002 add sp, #8 - 800acfa: bd80 pop {r7, pc} - -0800acfc : - * parameters in the UART_InitTypeDef and initialize the associated handle. - * @param huart UART handle. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) -{ - 800acfc: b580 push {r7, lr} - 800acfe: b082 sub sp, #8 - 800ad00: af00 add r7, sp, #0 - 800ad02: 6078 str r0, [r7, #4] - /* Check the UART handle allocation */ - if (huart == NULL) - 800ad04: 687b ldr r3, [r7, #4] - 800ad06: 2b00 cmp r3, #0 - 800ad08: d101 bne.n 800ad0e - { - return HAL_ERROR; - 800ad0a: 2301 movs r3, #1 - 800ad0c: e046 b.n 800ad9c - { - /* Check the parameters */ - assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); - } - - if (huart->gState == HAL_UART_STATE_RESET) - 800ad0e: 687b ldr r3, [r7, #4] - 800ad10: 2288 movs r2, #136 ; 0x88 - 800ad12: 589b ldr r3, [r3, r2] - 800ad14: 2b00 cmp r3, #0 - 800ad16: d107 bne.n 800ad28 - { - /* Allocate lock resource and initialize it */ - huart->Lock = HAL_UNLOCKED; - 800ad18: 687b ldr r3, [r7, #4] - 800ad1a: 2284 movs r2, #132 ; 0x84 - 800ad1c: 2100 movs r1, #0 - 800ad1e: 5499 strb r1, [r3, r2] - - /* Init the low level hardware */ - huart->MspInitCallback(huart); -#else - /* Init the low level hardware : GPIO, CLOCK */ - HAL_UART_MspInit(huart); - 800ad20: 687b ldr r3, [r7, #4] - 800ad22: 0018 movs r0, r3 - 800ad24: f7fb f9de bl 80060e4 -#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ - } - - huart->gState = HAL_UART_STATE_BUSY; - 800ad28: 687b ldr r3, [r7, #4] - 800ad2a: 2288 movs r2, #136 ; 0x88 - 800ad2c: 2124 movs r1, #36 ; 0x24 - 800ad2e: 5099 str r1, [r3, r2] - - __HAL_UART_DISABLE(huart); - 800ad30: 687b ldr r3, [r7, #4] - 800ad32: 681b ldr r3, [r3, #0] - 800ad34: 681a ldr r2, [r3, #0] - 800ad36: 687b ldr r3, [r7, #4] - 800ad38: 681b ldr r3, [r3, #0] - 800ad3a: 2101 movs r1, #1 - 800ad3c: 438a bics r2, r1 - 800ad3e: 601a str r2, [r3, #0] - - /* Set the UART Communication parameters */ - if (UART_SetConfig(huart) == HAL_ERROR) - 800ad40: 687b ldr r3, [r7, #4] - 800ad42: 0018 movs r0, r3 - 800ad44: f000 f830 bl 800ada8 - 800ad48: 0003 movs r3, r0 - 800ad4a: 2b01 cmp r3, #1 - 800ad4c: d101 bne.n 800ad52 - { - return HAL_ERROR; - 800ad4e: 2301 movs r3, #1 - 800ad50: e024 b.n 800ad9c - } - - if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) - 800ad52: 687b ldr r3, [r7, #4] - 800ad54: 6a9b ldr r3, [r3, #40] ; 0x28 - 800ad56: 2b00 cmp r3, #0 - 800ad58: d003 beq.n 800ad62 - { - UART_AdvFeatureConfig(huart); - 800ad5a: 687b ldr r3, [r7, #4] - 800ad5c: 0018 movs r0, r3 - 800ad5e: f000 f9c7 bl 800b0f0 - } - - /* In asynchronous mode, the following bits must be kept cleared: - - LINEN and CLKEN bits in the USART_CR2 register, - - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/ - CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); - 800ad62: 687b ldr r3, [r7, #4] - 800ad64: 681b ldr r3, [r3, #0] - 800ad66: 685a ldr r2, [r3, #4] - 800ad68: 687b ldr r3, [r7, #4] - 800ad6a: 681b ldr r3, [r3, #0] - 800ad6c: 490d ldr r1, [pc, #52] ; (800ada4 ) - 800ad6e: 400a ands r2, r1 - 800ad70: 605a str r2, [r3, #4] - CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); - 800ad72: 687b ldr r3, [r7, #4] - 800ad74: 681b ldr r3, [r3, #0] - 800ad76: 689a ldr r2, [r3, #8] - 800ad78: 687b ldr r3, [r7, #4] - 800ad7a: 681b ldr r3, [r3, #0] - 800ad7c: 212a movs r1, #42 ; 0x2a - 800ad7e: 438a bics r2, r1 - 800ad80: 609a str r2, [r3, #8] - - __HAL_UART_ENABLE(huart); - 800ad82: 687b ldr r3, [r7, #4] - 800ad84: 681b ldr r3, [r3, #0] - 800ad86: 681a ldr r2, [r3, #0] - 800ad88: 687b ldr r3, [r7, #4] - 800ad8a: 681b ldr r3, [r3, #0] - 800ad8c: 2101 movs r1, #1 - 800ad8e: 430a orrs r2, r1 - 800ad90: 601a str r2, [r3, #0] - - /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ - return (UART_CheckIdleState(huart)); - 800ad92: 687b ldr r3, [r7, #4] - 800ad94: 0018 movs r0, r3 - 800ad96: f000 fa5f bl 800b258 - 800ad9a: 0003 movs r3, r0 -} - 800ad9c: 0018 movs r0, r3 - 800ad9e: 46bd mov sp, r7 - 800ada0: b002 add sp, #8 - 800ada2: bd80 pop {r7, pc} - 800ada4: ffffb7ff .word 0xffffb7ff - -0800ada8 : - * @brief Configure the UART peripheral. - * @param huart UART handle. - * @retval HAL status - */ -HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) -{ - 800ada8: b580 push {r7, lr} - 800adaa: b088 sub sp, #32 - 800adac: af00 add r7, sp, #0 - 800adae: 6078 str r0, [r7, #4] - uint32_t tmpreg; - uint16_t brrtemp; - UART_ClockSourceTypeDef clocksource; - uint32_t usartdiv; - HAL_StatusTypeDef ret = HAL_OK; - 800adb0: 231a movs r3, #26 - 800adb2: 18fb adds r3, r7, r3 - 800adb4: 2200 movs r2, #0 - 800adb6: 701a strb r2, [r3, #0] - * the UART Word Length, Parity, Mode and oversampling: - * set the M bits according to huart->Init.WordLength value - * set PCE and PS bits according to huart->Init.Parity value - * set TE and RE bits according to huart->Init.Mode value - * set OVER8 bit according to huart->Init.OverSampling value */ - tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ; - 800adb8: 687b ldr r3, [r7, #4] - 800adba: 689a ldr r2, [r3, #8] - 800adbc: 687b ldr r3, [r7, #4] - 800adbe: 691b ldr r3, [r3, #16] - 800adc0: 431a orrs r2, r3 - 800adc2: 687b ldr r3, [r7, #4] - 800adc4: 695b ldr r3, [r3, #20] - 800adc6: 431a orrs r2, r3 - 800adc8: 687b ldr r3, [r7, #4] - 800adca: 69db ldr r3, [r3, #28] - 800adcc: 4313 orrs r3, r2 - 800adce: 61fb str r3, [r7, #28] - MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); - 800add0: 687b ldr r3, [r7, #4] - 800add2: 681b ldr r3, [r3, #0] - 800add4: 681b ldr r3, [r3, #0] - 800add6: 4abc ldr r2, [pc, #752] ; (800b0c8 ) - 800add8: 4013 ands r3, r2 - 800adda: 0019 movs r1, r3 - 800addc: 687b ldr r3, [r7, #4] - 800adde: 681b ldr r3, [r3, #0] - 800ade0: 69fa ldr r2, [r7, #28] - 800ade2: 430a orrs r2, r1 - 800ade4: 601a str r2, [r3, #0] - - /*-------------------------- USART CR2 Configuration -----------------------*/ - /* Configure the UART Stop Bits: Set STOP[13:12] bits according - * to huart->Init.StopBits value */ - MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); - 800ade6: 687b ldr r3, [r7, #4] - 800ade8: 681b ldr r3, [r3, #0] - 800adea: 685b ldr r3, [r3, #4] - 800adec: 4ab7 ldr r2, [pc, #732] ; (800b0cc ) - 800adee: 4013 ands r3, r2 - 800adf0: 0019 movs r1, r3 - 800adf2: 687b ldr r3, [r7, #4] - 800adf4: 68da ldr r2, [r3, #12] - 800adf6: 687b ldr r3, [r7, #4] - 800adf8: 681b ldr r3, [r3, #0] - 800adfa: 430a orrs r2, r1 - 800adfc: 605a str r2, [r3, #4] - /* Configure - * - UART HardWare Flow Control: set CTSE and RTSE bits according - * to huart->Init.HwFlowCtl value - * - one-bit sampling method versus three samples' majority rule according - * to huart->Init.OneBitSampling (not applicable to LPUART) */ - tmpreg = (uint32_t)huart->Init.HwFlowCtl; - 800adfe: 687b ldr r3, [r7, #4] - 800ae00: 699b ldr r3, [r3, #24] - 800ae02: 61fb str r3, [r7, #28] - - if (!(UART_INSTANCE_LOWPOWER(huart))) - { - tmpreg |= huart->Init.OneBitSampling; - 800ae04: 687b ldr r3, [r7, #4] - 800ae06: 6a1b ldr r3, [r3, #32] - 800ae08: 69fa ldr r2, [r7, #28] - 800ae0a: 4313 orrs r3, r2 - 800ae0c: 61fb str r3, [r7, #28] - } - MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); - 800ae0e: 687b ldr r3, [r7, #4] - 800ae10: 681b ldr r3, [r3, #0] - 800ae12: 689b ldr r3, [r3, #8] - 800ae14: 4aae ldr r2, [pc, #696] ; (800b0d0 ) - 800ae16: 4013 ands r3, r2 - 800ae18: 0019 movs r1, r3 - 800ae1a: 687b ldr r3, [r7, #4] - 800ae1c: 681b ldr r3, [r3, #0] - 800ae1e: 69fa ldr r2, [r7, #28] - 800ae20: 430a orrs r2, r1 - 800ae22: 609a str r2, [r3, #8] - - /*-------------------------- USART PRESC Configuration -----------------------*/ - /* Configure - * - UART Clock Prescaler : set PRESCALER according to huart->Init.ClockPrescaler value */ - MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler); - 800ae24: 687b ldr r3, [r7, #4] - 800ae26: 681b ldr r3, [r3, #0] - 800ae28: 6adb ldr r3, [r3, #44] ; 0x2c - 800ae2a: 220f movs r2, #15 - 800ae2c: 4393 bics r3, r2 - 800ae2e: 0019 movs r1, r3 - 800ae30: 687b ldr r3, [r7, #4] - 800ae32: 6a5a ldr r2, [r3, #36] ; 0x24 - 800ae34: 687b ldr r3, [r7, #4] - 800ae36: 681b ldr r3, [r3, #0] - 800ae38: 430a orrs r2, r1 - 800ae3a: 62da str r2, [r3, #44] ; 0x2c - - /*-------------------------- USART BRR Configuration -----------------------*/ - UART_GETCLOCKSOURCE(huart, clocksource); - 800ae3c: 687b ldr r3, [r7, #4] - 800ae3e: 681b ldr r3, [r3, #0] - 800ae40: 4aa4 ldr r2, [pc, #656] ; (800b0d4 ) - 800ae42: 4293 cmp r3, r2 - 800ae44: d127 bne.n 800ae96 - 800ae46: 4ba4 ldr r3, [pc, #656] ; (800b0d8 ) - 800ae48: 6d5b ldr r3, [r3, #84] ; 0x54 - 800ae4a: 2203 movs r2, #3 - 800ae4c: 4013 ands r3, r2 - 800ae4e: 2b03 cmp r3, #3 - 800ae50: d017 beq.n 800ae82 - 800ae52: d81b bhi.n 800ae8c - 800ae54: 2b02 cmp r3, #2 - 800ae56: d00a beq.n 800ae6e - 800ae58: d818 bhi.n 800ae8c - 800ae5a: 2b00 cmp r3, #0 - 800ae5c: d002 beq.n 800ae64 - 800ae5e: 2b01 cmp r3, #1 - 800ae60: d00a beq.n 800ae78 - 800ae62: e013 b.n 800ae8c - 800ae64: 231b movs r3, #27 - 800ae66: 18fb adds r3, r7, r3 - 800ae68: 2200 movs r2, #0 - 800ae6a: 701a strb r2, [r3, #0] - 800ae6c: e058 b.n 800af20 - 800ae6e: 231b movs r3, #27 - 800ae70: 18fb adds r3, r7, r3 - 800ae72: 2202 movs r2, #2 - 800ae74: 701a strb r2, [r3, #0] - 800ae76: e053 b.n 800af20 - 800ae78: 231b movs r3, #27 - 800ae7a: 18fb adds r3, r7, r3 - 800ae7c: 2204 movs r2, #4 - 800ae7e: 701a strb r2, [r3, #0] - 800ae80: e04e b.n 800af20 - 800ae82: 231b movs r3, #27 - 800ae84: 18fb adds r3, r7, r3 - 800ae86: 2208 movs r2, #8 - 800ae88: 701a strb r2, [r3, #0] - 800ae8a: e049 b.n 800af20 - 800ae8c: 231b movs r3, #27 - 800ae8e: 18fb adds r3, r7, r3 - 800ae90: 2210 movs r2, #16 - 800ae92: 701a strb r2, [r3, #0] - 800ae94: e044 b.n 800af20 - 800ae96: 687b ldr r3, [r7, #4] - 800ae98: 681b ldr r3, [r3, #0] - 800ae9a: 4a90 ldr r2, [pc, #576] ; (800b0dc ) - 800ae9c: 4293 cmp r3, r2 - 800ae9e: d127 bne.n 800aef0 - 800aea0: 4b8d ldr r3, [pc, #564] ; (800b0d8 ) - 800aea2: 6d5b ldr r3, [r3, #84] ; 0x54 - 800aea4: 220c movs r2, #12 - 800aea6: 4013 ands r3, r2 - 800aea8: 2b0c cmp r3, #12 - 800aeaa: d017 beq.n 800aedc - 800aeac: d81b bhi.n 800aee6 - 800aeae: 2b08 cmp r3, #8 - 800aeb0: d00a beq.n 800aec8 - 800aeb2: d818 bhi.n 800aee6 - 800aeb4: 2b00 cmp r3, #0 - 800aeb6: d002 beq.n 800aebe - 800aeb8: 2b04 cmp r3, #4 - 800aeba: d00a beq.n 800aed2 - 800aebc: e013 b.n 800aee6 - 800aebe: 231b movs r3, #27 - 800aec0: 18fb adds r3, r7, r3 - 800aec2: 2200 movs r2, #0 - 800aec4: 701a strb r2, [r3, #0] - 800aec6: e02b b.n 800af20 - 800aec8: 231b movs r3, #27 - 800aeca: 18fb adds r3, r7, r3 - 800aecc: 2202 movs r2, #2 - 800aece: 701a strb r2, [r3, #0] - 800aed0: e026 b.n 800af20 - 800aed2: 231b movs r3, #27 - 800aed4: 18fb adds r3, r7, r3 - 800aed6: 2204 movs r2, #4 - 800aed8: 701a strb r2, [r3, #0] - 800aeda: e021 b.n 800af20 - 800aedc: 231b movs r3, #27 - 800aede: 18fb adds r3, r7, r3 - 800aee0: 2208 movs r2, #8 - 800aee2: 701a strb r2, [r3, #0] - 800aee4: e01c b.n 800af20 - 800aee6: 231b movs r3, #27 - 800aee8: 18fb adds r3, r7, r3 - 800aeea: 2210 movs r2, #16 - 800aeec: 701a strb r2, [r3, #0] - 800aeee: e017 b.n 800af20 - 800aef0: 687b ldr r3, [r7, #4] - 800aef2: 681b ldr r3, [r3, #0] - 800aef4: 4a7a ldr r2, [pc, #488] ; (800b0e0 ) - 800aef6: 4293 cmp r3, r2 - 800aef8: d104 bne.n 800af04 - 800aefa: 231b movs r3, #27 - 800aefc: 18fb adds r3, r7, r3 - 800aefe: 2200 movs r2, #0 - 800af00: 701a strb r2, [r3, #0] - 800af02: e00d b.n 800af20 - 800af04: 687b ldr r3, [r7, #4] - 800af06: 681b ldr r3, [r3, #0] - 800af08: 4a76 ldr r2, [pc, #472] ; (800b0e4 ) - 800af0a: 4293 cmp r3, r2 - 800af0c: d104 bne.n 800af18 - 800af0e: 231b movs r3, #27 - 800af10: 18fb adds r3, r7, r3 - 800af12: 2200 movs r2, #0 - 800af14: 701a strb r2, [r3, #0] - 800af16: e003 b.n 800af20 - 800af18: 231b movs r3, #27 - 800af1a: 18fb adds r3, r7, r3 - 800af1c: 2210 movs r2, #16 - 800af1e: 701a strb r2, [r3, #0] - } /* if ( (lpuart_ker_ck_pres < (3 * huart->Init.BaudRate) ) || - (lpuart_ker_ck_pres > (4096 * huart->Init.BaudRate) )) */ - } /* if (pclk != 0) */ - } - /* Check UART Over Sampling to set Baud Rate Register */ - else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) - 800af20: 687b ldr r3, [r7, #4] - 800af22: 69da ldr r2, [r3, #28] - 800af24: 2380 movs r3, #128 ; 0x80 - 800af26: 021b lsls r3, r3, #8 - 800af28: 429a cmp r2, r3 - 800af2a: d000 beq.n 800af2e - 800af2c: e065 b.n 800affa - { - switch (clocksource) - 800af2e: 231b movs r3, #27 - 800af30: 18fb adds r3, r7, r3 - 800af32: 781b ldrb r3, [r3, #0] - 800af34: 2b08 cmp r3, #8 - 800af36: d015 beq.n 800af64 - 800af38: dc18 bgt.n 800af6c - 800af3a: 2b04 cmp r3, #4 - 800af3c: d00d beq.n 800af5a - 800af3e: dc15 bgt.n 800af6c - 800af40: 2b00 cmp r3, #0 - 800af42: d002 beq.n 800af4a - 800af44: 2b02 cmp r3, #2 - 800af46: d005 beq.n 800af54 - 800af48: e010 b.n 800af6c - { - case UART_CLOCKSOURCE_PCLK1: - pclk = HAL_RCC_GetPCLK1Freq(); - 800af4a: f7fd f97b bl 8008244 - 800af4e: 0003 movs r3, r0 - 800af50: 617b str r3, [r7, #20] - break; - 800af52: e012 b.n 800af7a - case UART_CLOCKSOURCE_HSI: - pclk = (uint32_t) HSI_VALUE; - 800af54: 4b64 ldr r3, [pc, #400] ; (800b0e8 ) - 800af56: 617b str r3, [r7, #20] - break; - 800af58: e00f b.n 800af7a - case UART_CLOCKSOURCE_SYSCLK: - pclk = HAL_RCC_GetSysClockFreq(); - 800af5a: f7fd f8e9 bl 8008130 - 800af5e: 0003 movs r3, r0 - 800af60: 617b str r3, [r7, #20] - break; - 800af62: e00a b.n 800af7a - case UART_CLOCKSOURCE_LSE: - pclk = (uint32_t) LSE_VALUE; - 800af64: 2380 movs r3, #128 ; 0x80 - 800af66: 021b lsls r3, r3, #8 - 800af68: 617b str r3, [r7, #20] - break; - 800af6a: e006 b.n 800af7a - default: - pclk = 0U; - 800af6c: 2300 movs r3, #0 - 800af6e: 617b str r3, [r7, #20] - ret = HAL_ERROR; - 800af70: 231a movs r3, #26 - 800af72: 18fb adds r3, r7, r3 - 800af74: 2201 movs r2, #1 - 800af76: 701a strb r2, [r3, #0] - break; - 800af78: 46c0 nop ; (mov r8, r8) - } - - /* USARTDIV must be greater than or equal to 0d16 */ - if (pclk != 0U) - 800af7a: 697b ldr r3, [r7, #20] - 800af7c: 2b00 cmp r3, #0 - 800af7e: d100 bne.n 800af82 - 800af80: e08d b.n 800b09e - { - usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 800af82: 687b ldr r3, [r7, #4] - 800af84: 6a5a ldr r2, [r3, #36] ; 0x24 - 800af86: 4b59 ldr r3, [pc, #356] ; (800b0ec ) - 800af88: 0052 lsls r2, r2, #1 - 800af8a: 5ad3 ldrh r3, [r2, r3] - 800af8c: 0019 movs r1, r3 - 800af8e: 6978 ldr r0, [r7, #20] - 800af90: f7f5 f8cc bl 800012c <__udivsi3> - 800af94: 0003 movs r3, r0 - 800af96: 005a lsls r2, r3, #1 - 800af98: 687b ldr r3, [r7, #4] - 800af9a: 685b ldr r3, [r3, #4] - 800af9c: 085b lsrs r3, r3, #1 - 800af9e: 18d2 adds r2, r2, r3 - 800afa0: 687b ldr r3, [r7, #4] - 800afa2: 685b ldr r3, [r3, #4] - 800afa4: 0019 movs r1, r3 - 800afa6: 0010 movs r0, r2 - 800afa8: f7f5 f8c0 bl 800012c <__udivsi3> - 800afac: 0003 movs r3, r0 - 800afae: 613b str r3, [r7, #16] - if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 800afb0: 693b ldr r3, [r7, #16] - 800afb2: 2b0f cmp r3, #15 - 800afb4: d91c bls.n 800aff0 - 800afb6: 693a ldr r2, [r7, #16] - 800afb8: 2380 movs r3, #128 ; 0x80 - 800afba: 025b lsls r3, r3, #9 - 800afbc: 429a cmp r2, r3 - 800afbe: d217 bcs.n 800aff0 - { - brrtemp = (uint16_t)(usartdiv & 0xFFF0U); - 800afc0: 693b ldr r3, [r7, #16] - 800afc2: b29a uxth r2, r3 - 800afc4: 200e movs r0, #14 - 800afc6: 183b adds r3, r7, r0 - 800afc8: 210f movs r1, #15 - 800afca: 438a bics r2, r1 - 800afcc: 801a strh r2, [r3, #0] - brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); - 800afce: 693b ldr r3, [r7, #16] - 800afd0: 085b lsrs r3, r3, #1 - 800afd2: b29b uxth r3, r3 - 800afd4: 2207 movs r2, #7 - 800afd6: 4013 ands r3, r2 - 800afd8: b299 uxth r1, r3 - 800afda: 183b adds r3, r7, r0 - 800afdc: 183a adds r2, r7, r0 - 800afde: 8812 ldrh r2, [r2, #0] - 800afe0: 430a orrs r2, r1 - 800afe2: 801a strh r2, [r3, #0] - huart->Instance->BRR = brrtemp; - 800afe4: 687b ldr r3, [r7, #4] - 800afe6: 681b ldr r3, [r3, #0] - 800afe8: 183a adds r2, r7, r0 - 800afea: 8812 ldrh r2, [r2, #0] - 800afec: 60da str r2, [r3, #12] - 800afee: e056 b.n 800b09e - } - else - { - ret = HAL_ERROR; - 800aff0: 231a movs r3, #26 - 800aff2: 18fb adds r3, r7, r3 - 800aff4: 2201 movs r2, #1 - 800aff6: 701a strb r2, [r3, #0] - 800aff8: e051 b.n 800b09e - } - } - } - else - { - switch (clocksource) - 800affa: 231b movs r3, #27 - 800affc: 18fb adds r3, r7, r3 - 800affe: 781b ldrb r3, [r3, #0] - 800b000: 2b08 cmp r3, #8 - 800b002: d015 beq.n 800b030 - 800b004: dc18 bgt.n 800b038 - 800b006: 2b04 cmp r3, #4 - 800b008: d00d beq.n 800b026 - 800b00a: dc15 bgt.n 800b038 - 800b00c: 2b00 cmp r3, #0 - 800b00e: d002 beq.n 800b016 - 800b010: 2b02 cmp r3, #2 - 800b012: d005 beq.n 800b020 - 800b014: e010 b.n 800b038 - { - case UART_CLOCKSOURCE_PCLK1: - pclk = HAL_RCC_GetPCLK1Freq(); - 800b016: f7fd f915 bl 8008244 - 800b01a: 0003 movs r3, r0 - 800b01c: 617b str r3, [r7, #20] - break; - 800b01e: e012 b.n 800b046 - case UART_CLOCKSOURCE_HSI: - pclk = (uint32_t) HSI_VALUE; - 800b020: 4b31 ldr r3, [pc, #196] ; (800b0e8 ) - 800b022: 617b str r3, [r7, #20] - break; - 800b024: e00f b.n 800b046 - case UART_CLOCKSOURCE_SYSCLK: - pclk = HAL_RCC_GetSysClockFreq(); - 800b026: f7fd f883 bl 8008130 - 800b02a: 0003 movs r3, r0 - 800b02c: 617b str r3, [r7, #20] - break; - 800b02e: e00a b.n 800b046 - case UART_CLOCKSOURCE_LSE: - pclk = (uint32_t) LSE_VALUE; - 800b030: 2380 movs r3, #128 ; 0x80 - 800b032: 021b lsls r3, r3, #8 - 800b034: 617b str r3, [r7, #20] - break; - 800b036: e006 b.n 800b046 - default: - pclk = 0U; - 800b038: 2300 movs r3, #0 - 800b03a: 617b str r3, [r7, #20] - ret = HAL_ERROR; - 800b03c: 231a movs r3, #26 - 800b03e: 18fb adds r3, r7, r3 - 800b040: 2201 movs r2, #1 - 800b042: 701a strb r2, [r3, #0] - break; - 800b044: 46c0 nop ; (mov r8, r8) - } - - if (pclk != 0U) - 800b046: 697b ldr r3, [r7, #20] - 800b048: 2b00 cmp r3, #0 - 800b04a: d028 beq.n 800b09e - { - /* USARTDIV must be greater than or equal to 0d16 */ - usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 800b04c: 687b ldr r3, [r7, #4] - 800b04e: 6a5a ldr r2, [r3, #36] ; 0x24 - 800b050: 4b26 ldr r3, [pc, #152] ; (800b0ec ) - 800b052: 0052 lsls r2, r2, #1 - 800b054: 5ad3 ldrh r3, [r2, r3] - 800b056: 0019 movs r1, r3 - 800b058: 6978 ldr r0, [r7, #20] - 800b05a: f7f5 f867 bl 800012c <__udivsi3> - 800b05e: 0003 movs r3, r0 - 800b060: 001a movs r2, r3 - 800b062: 687b ldr r3, [r7, #4] - 800b064: 685b ldr r3, [r3, #4] - 800b066: 085b lsrs r3, r3, #1 - 800b068: 18d2 adds r2, r2, r3 - 800b06a: 687b ldr r3, [r7, #4] - 800b06c: 685b ldr r3, [r3, #4] - 800b06e: 0019 movs r1, r3 - 800b070: 0010 movs r0, r2 - 800b072: f7f5 f85b bl 800012c <__udivsi3> - 800b076: 0003 movs r3, r0 - 800b078: 613b str r3, [r7, #16] - if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 800b07a: 693b ldr r3, [r7, #16] - 800b07c: 2b0f cmp r3, #15 - 800b07e: d90a bls.n 800b096 - 800b080: 693a ldr r2, [r7, #16] - 800b082: 2380 movs r3, #128 ; 0x80 - 800b084: 025b lsls r3, r3, #9 - 800b086: 429a cmp r2, r3 - 800b088: d205 bcs.n 800b096 - { - huart->Instance->BRR = (uint16_t)usartdiv; - 800b08a: 693b ldr r3, [r7, #16] - 800b08c: b29a uxth r2, r3 - 800b08e: 687b ldr r3, [r7, #4] - 800b090: 681b ldr r3, [r3, #0] - 800b092: 60da str r2, [r3, #12] - 800b094: e003 b.n 800b09e - } - else - { - ret = HAL_ERROR; - 800b096: 231a movs r3, #26 - 800b098: 18fb adds r3, r7, r3 - 800b09a: 2201 movs r2, #1 - 800b09c: 701a strb r2, [r3, #0] - } - } - } - - /* Initialize the number of data to process during RX/TX ISR execution */ - huart->NbTxDataToProcess = 1; - 800b09e: 687b ldr r3, [r7, #4] - 800b0a0: 226a movs r2, #106 ; 0x6a - 800b0a2: 2101 movs r1, #1 - 800b0a4: 5299 strh r1, [r3, r2] - huart->NbRxDataToProcess = 1; - 800b0a6: 687b ldr r3, [r7, #4] - 800b0a8: 2268 movs r2, #104 ; 0x68 - 800b0aa: 2101 movs r1, #1 - 800b0ac: 5299 strh r1, [r3, r2] - - /* Clear ISR function pointers */ - huart->RxISR = NULL; - 800b0ae: 687b ldr r3, [r7, #4] - 800b0b0: 2200 movs r2, #0 - 800b0b2: 675a str r2, [r3, #116] ; 0x74 - huart->TxISR = NULL; - 800b0b4: 687b ldr r3, [r7, #4] - 800b0b6: 2200 movs r2, #0 - 800b0b8: 679a str r2, [r3, #120] ; 0x78 - - return ret; - 800b0ba: 231a movs r3, #26 - 800b0bc: 18fb adds r3, r7, r3 - 800b0be: 781b ldrb r3, [r3, #0] -} - 800b0c0: 0018 movs r0, r3 - 800b0c2: 46bd mov sp, r7 - 800b0c4: b008 add sp, #32 - 800b0c6: bd80 pop {r7, pc} - 800b0c8: cfff69f3 .word 0xcfff69f3 - 800b0cc: ffffcfff .word 0xffffcfff - 800b0d0: 11fff4ff .word 0x11fff4ff - 800b0d4: 40013800 .word 0x40013800 - 800b0d8: 40021000 .word 0x40021000 - 800b0dc: 40004400 .word 0x40004400 - 800b0e0: 40004800 .word 0x40004800 - 800b0e4: 40004c00 .word 0x40004c00 - 800b0e8: 00f42400 .word 0x00f42400 - 800b0ec: 08010f34 .word 0x08010f34 - -0800b0f0 : - * @brief Configure the UART peripheral advanced features. - * @param huart UART handle. - * @retval None - */ -void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) -{ - 800b0f0: b580 push {r7, lr} - 800b0f2: b082 sub sp, #8 - 800b0f4: af00 add r7, sp, #0 - 800b0f6: 6078 str r0, [r7, #4] - /* Check whether the set of advanced features to configure is properly set */ - assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit)); - - /* if required, configure TX pin active level inversion */ - if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) - 800b0f8: 687b ldr r3, [r7, #4] - 800b0fa: 6a9b ldr r3, [r3, #40] ; 0x28 - 800b0fc: 2201 movs r2, #1 - 800b0fe: 4013 ands r3, r2 - 800b100: d00b beq.n 800b11a - { - assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); - MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); - 800b102: 687b ldr r3, [r7, #4] - 800b104: 681b ldr r3, [r3, #0] - 800b106: 685b ldr r3, [r3, #4] - 800b108: 4a4a ldr r2, [pc, #296] ; (800b234 ) - 800b10a: 4013 ands r3, r2 - 800b10c: 0019 movs r1, r3 - 800b10e: 687b ldr r3, [r7, #4] - 800b110: 6ada ldr r2, [r3, #44] ; 0x2c - 800b112: 687b ldr r3, [r7, #4] - 800b114: 681b ldr r3, [r3, #0] - 800b116: 430a orrs r2, r1 - 800b118: 605a str r2, [r3, #4] - } - - /* if required, configure RX pin active level inversion */ - if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT)) - 800b11a: 687b ldr r3, [r7, #4] - 800b11c: 6a9b ldr r3, [r3, #40] ; 0x28 - 800b11e: 2202 movs r2, #2 - 800b120: 4013 ands r3, r2 - 800b122: d00b beq.n 800b13c - { - assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); - MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); - 800b124: 687b ldr r3, [r7, #4] - 800b126: 681b ldr r3, [r3, #0] - 800b128: 685b ldr r3, [r3, #4] - 800b12a: 4a43 ldr r2, [pc, #268] ; (800b238 ) - 800b12c: 4013 ands r3, r2 - 800b12e: 0019 movs r1, r3 - 800b130: 687b ldr r3, [r7, #4] - 800b132: 6b1a ldr r2, [r3, #48] ; 0x30 - 800b134: 687b ldr r3, [r7, #4] - 800b136: 681b ldr r3, [r3, #0] - 800b138: 430a orrs r2, r1 - 800b13a: 605a str r2, [r3, #4] - } - - /* if required, configure data inversion */ - if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) - 800b13c: 687b ldr r3, [r7, #4] - 800b13e: 6a9b ldr r3, [r3, #40] ; 0x28 - 800b140: 2204 movs r2, #4 - 800b142: 4013 ands r3, r2 - 800b144: d00b beq.n 800b15e - { - assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); - MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); - 800b146: 687b ldr r3, [r7, #4] - 800b148: 681b ldr r3, [r3, #0] - 800b14a: 685b ldr r3, [r3, #4] - 800b14c: 4a3b ldr r2, [pc, #236] ; (800b23c ) - 800b14e: 4013 ands r3, r2 - 800b150: 0019 movs r1, r3 - 800b152: 687b ldr r3, [r7, #4] - 800b154: 6b5a ldr r2, [r3, #52] ; 0x34 - 800b156: 687b ldr r3, [r7, #4] - 800b158: 681b ldr r3, [r3, #0] - 800b15a: 430a orrs r2, r1 - 800b15c: 605a str r2, [r3, #4] - } - - /* if required, configure RX/TX pins swap */ - if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) - 800b15e: 687b ldr r3, [r7, #4] - 800b160: 6a9b ldr r3, [r3, #40] ; 0x28 - 800b162: 2208 movs r2, #8 - 800b164: 4013 ands r3, r2 - 800b166: d00b beq.n 800b180 - { - assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); - MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); - 800b168: 687b ldr r3, [r7, #4] - 800b16a: 681b ldr r3, [r3, #0] - 800b16c: 685b ldr r3, [r3, #4] - 800b16e: 4a34 ldr r2, [pc, #208] ; (800b240 ) - 800b170: 4013 ands r3, r2 - 800b172: 0019 movs r1, r3 - 800b174: 687b ldr r3, [r7, #4] - 800b176: 6b9a ldr r2, [r3, #56] ; 0x38 - 800b178: 687b ldr r3, [r7, #4] - 800b17a: 681b ldr r3, [r3, #0] - 800b17c: 430a orrs r2, r1 - 800b17e: 605a str r2, [r3, #4] - } - - /* if required, configure RX overrun detection disabling */ - if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) - 800b180: 687b ldr r3, [r7, #4] - 800b182: 6a9b ldr r3, [r3, #40] ; 0x28 - 800b184: 2210 movs r2, #16 - 800b186: 4013 ands r3, r2 - 800b188: d00b beq.n 800b1a2 - { - assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); - MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); - 800b18a: 687b ldr r3, [r7, #4] - 800b18c: 681b ldr r3, [r3, #0] - 800b18e: 689b ldr r3, [r3, #8] - 800b190: 4a2c ldr r2, [pc, #176] ; (800b244 ) - 800b192: 4013 ands r3, r2 - 800b194: 0019 movs r1, r3 - 800b196: 687b ldr r3, [r7, #4] - 800b198: 6bda ldr r2, [r3, #60] ; 0x3c - 800b19a: 687b ldr r3, [r7, #4] - 800b19c: 681b ldr r3, [r3, #0] - 800b19e: 430a orrs r2, r1 - 800b1a0: 609a str r2, [r3, #8] - } - - /* if required, configure DMA disabling on reception error */ - if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT)) - 800b1a2: 687b ldr r3, [r7, #4] - 800b1a4: 6a9b ldr r3, [r3, #40] ; 0x28 - 800b1a6: 2220 movs r2, #32 - 800b1a8: 4013 ands r3, r2 - 800b1aa: d00b beq.n 800b1c4 - { - assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); - MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); - 800b1ac: 687b ldr r3, [r7, #4] - 800b1ae: 681b ldr r3, [r3, #0] - 800b1b0: 689b ldr r3, [r3, #8] - 800b1b2: 4a25 ldr r2, [pc, #148] ; (800b248 ) - 800b1b4: 4013 ands r3, r2 - 800b1b6: 0019 movs r1, r3 - 800b1b8: 687b ldr r3, [r7, #4] - 800b1ba: 6c1a ldr r2, [r3, #64] ; 0x40 - 800b1bc: 687b ldr r3, [r7, #4] - 800b1be: 681b ldr r3, [r3, #0] - 800b1c0: 430a orrs r2, r1 - 800b1c2: 609a str r2, [r3, #8] - } - - /* if required, configure auto Baud rate detection scheme */ - if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT)) - 800b1c4: 687b ldr r3, [r7, #4] - 800b1c6: 6a9b ldr r3, [r3, #40] ; 0x28 - 800b1c8: 2240 movs r2, #64 ; 0x40 - 800b1ca: 4013 ands r3, r2 - 800b1cc: d01d beq.n 800b20a - { - assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance)); - assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable)); - MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable); - 800b1ce: 687b ldr r3, [r7, #4] - 800b1d0: 681b ldr r3, [r3, #0] - 800b1d2: 685b ldr r3, [r3, #4] - 800b1d4: 4a1d ldr r2, [pc, #116] ; (800b24c ) - 800b1d6: 4013 ands r3, r2 - 800b1d8: 0019 movs r1, r3 - 800b1da: 687b ldr r3, [r7, #4] - 800b1dc: 6c5a ldr r2, [r3, #68] ; 0x44 - 800b1de: 687b ldr r3, [r7, #4] - 800b1e0: 681b ldr r3, [r3, #0] - 800b1e2: 430a orrs r2, r1 - 800b1e4: 605a str r2, [r3, #4] - /* set auto Baudrate detection parameters if detection is enabled */ - if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) - 800b1e6: 687b ldr r3, [r7, #4] - 800b1e8: 6c5a ldr r2, [r3, #68] ; 0x44 - 800b1ea: 2380 movs r3, #128 ; 0x80 - 800b1ec: 035b lsls r3, r3, #13 - 800b1ee: 429a cmp r2, r3 - 800b1f0: d10b bne.n 800b20a - { - assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); - MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); - 800b1f2: 687b ldr r3, [r7, #4] - 800b1f4: 681b ldr r3, [r3, #0] - 800b1f6: 685b ldr r3, [r3, #4] - 800b1f8: 4a15 ldr r2, [pc, #84] ; (800b250 ) - 800b1fa: 4013 ands r3, r2 - 800b1fc: 0019 movs r1, r3 - 800b1fe: 687b ldr r3, [r7, #4] - 800b200: 6c9a ldr r2, [r3, #72] ; 0x48 - 800b202: 687b ldr r3, [r7, #4] - 800b204: 681b ldr r3, [r3, #0] - 800b206: 430a orrs r2, r1 - 800b208: 605a str r2, [r3, #4] - } - } - - /* if required, configure MSB first on communication line */ - if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT)) - 800b20a: 687b ldr r3, [r7, #4] - 800b20c: 6a9b ldr r3, [r3, #40] ; 0x28 - 800b20e: 2280 movs r2, #128 ; 0x80 - 800b210: 4013 ands r3, r2 - 800b212: d00b beq.n 800b22c - { - assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); - MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); - 800b214: 687b ldr r3, [r7, #4] - 800b216: 681b ldr r3, [r3, #0] - 800b218: 685b ldr r3, [r3, #4] - 800b21a: 4a0e ldr r2, [pc, #56] ; (800b254 ) - 800b21c: 4013 ands r3, r2 - 800b21e: 0019 movs r1, r3 - 800b220: 687b ldr r3, [r7, #4] - 800b222: 6cda ldr r2, [r3, #76] ; 0x4c - 800b224: 687b ldr r3, [r7, #4] - 800b226: 681b ldr r3, [r3, #0] - 800b228: 430a orrs r2, r1 - 800b22a: 605a str r2, [r3, #4] - } -} - 800b22c: 46c0 nop ; (mov r8, r8) - 800b22e: 46bd mov sp, r7 - 800b230: b002 add sp, #8 - 800b232: bd80 pop {r7, pc} - 800b234: fffdffff .word 0xfffdffff - 800b238: fffeffff .word 0xfffeffff - 800b23c: fffbffff .word 0xfffbffff - 800b240: ffff7fff .word 0xffff7fff - 800b244: ffffefff .word 0xffffefff - 800b248: ffffdfff .word 0xffffdfff - 800b24c: ffefffff .word 0xffefffff - 800b250: ff9fffff .word 0xff9fffff - 800b254: fff7ffff .word 0xfff7ffff - -0800b258 : - * @brief Check the UART Idle State. - * @param huart UART handle. - * @retval HAL status - */ -HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) -{ - 800b258: b580 push {r7, lr} - 800b25a: b086 sub sp, #24 - 800b25c: af02 add r7, sp, #8 - 800b25e: 6078 str r0, [r7, #4] - uint32_t tickstart; - - /* Initialize the UART ErrorCode */ - huart->ErrorCode = HAL_UART_ERROR_NONE; - 800b260: 687b ldr r3, [r7, #4] - 800b262: 2290 movs r2, #144 ; 0x90 - 800b264: 2100 movs r1, #0 - 800b266: 5099 str r1, [r3, r2] - - /* Init tickstart for timeout management */ - tickstart = HAL_GetTick(); - 800b268: f7fa fffa bl 8006260 - 800b26c: 0003 movs r3, r0 - 800b26e: 60fb str r3, [r7, #12] - - /* Check if the Transmitter is enabled */ - if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) - 800b270: 687b ldr r3, [r7, #4] - 800b272: 681b ldr r3, [r3, #0] - 800b274: 681b ldr r3, [r3, #0] - 800b276: 2208 movs r2, #8 - 800b278: 4013 ands r3, r2 - 800b27a: 2b08 cmp r3, #8 - 800b27c: d10c bne.n 800b298 - { - /* Wait until TEACK flag is set */ - if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 800b27e: 68fb ldr r3, [r7, #12] - 800b280: 2280 movs r2, #128 ; 0x80 - 800b282: 0391 lsls r1, r2, #14 - 800b284: 6878 ldr r0, [r7, #4] - 800b286: 4a1a ldr r2, [pc, #104] ; (800b2f0 ) - 800b288: 9200 str r2, [sp, #0] - 800b28a: 2200 movs r2, #0 - 800b28c: f000 f832 bl 800b2f4 - 800b290: 1e03 subs r3, r0, #0 - 800b292: d001 beq.n 800b298 - { - /* Timeout occurred */ - return HAL_TIMEOUT; - 800b294: 2303 movs r3, #3 - 800b296: e026 b.n 800b2e6 - } - } - - /* Check if the Receiver is enabled */ - if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) - 800b298: 687b ldr r3, [r7, #4] - 800b29a: 681b ldr r3, [r3, #0] - 800b29c: 681b ldr r3, [r3, #0] - 800b29e: 2204 movs r2, #4 - 800b2a0: 4013 ands r3, r2 - 800b2a2: 2b04 cmp r3, #4 - 800b2a4: d10c bne.n 800b2c0 - { - /* Wait until REACK flag is set */ - if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 800b2a6: 68fb ldr r3, [r7, #12] - 800b2a8: 2280 movs r2, #128 ; 0x80 - 800b2aa: 03d1 lsls r1, r2, #15 - 800b2ac: 6878 ldr r0, [r7, #4] - 800b2ae: 4a10 ldr r2, [pc, #64] ; (800b2f0 ) - 800b2b0: 9200 str r2, [sp, #0] - 800b2b2: 2200 movs r2, #0 - 800b2b4: f000 f81e bl 800b2f4 - 800b2b8: 1e03 subs r3, r0, #0 - 800b2ba: d001 beq.n 800b2c0 - { - /* Timeout occurred */ - return HAL_TIMEOUT; - 800b2bc: 2303 movs r3, #3 - 800b2be: e012 b.n 800b2e6 - } - } - - /* Initialize the UART State */ - huart->gState = HAL_UART_STATE_READY; - 800b2c0: 687b ldr r3, [r7, #4] - 800b2c2: 2288 movs r2, #136 ; 0x88 - 800b2c4: 2120 movs r1, #32 - 800b2c6: 5099 str r1, [r3, r2] - huart->RxState = HAL_UART_STATE_READY; - 800b2c8: 687b ldr r3, [r7, #4] - 800b2ca: 228c movs r2, #140 ; 0x8c - 800b2cc: 2120 movs r1, #32 - 800b2ce: 5099 str r1, [r3, r2] - huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 800b2d0: 687b ldr r3, [r7, #4] - 800b2d2: 2200 movs r2, #0 - 800b2d4: 66da str r2, [r3, #108] ; 0x6c - huart->RxEventType = HAL_UART_RXEVENT_TC; - 800b2d6: 687b ldr r3, [r7, #4] - 800b2d8: 2200 movs r2, #0 - 800b2da: 671a str r2, [r3, #112] ; 0x70 - - __HAL_UNLOCK(huart); - 800b2dc: 687b ldr r3, [r7, #4] - 800b2de: 2284 movs r2, #132 ; 0x84 - 800b2e0: 2100 movs r1, #0 - 800b2e2: 5499 strb r1, [r3, r2] - - return HAL_OK; - 800b2e4: 2300 movs r3, #0 -} - 800b2e6: 0018 movs r0, r3 - 800b2e8: 46bd mov sp, r7 - 800b2ea: b004 add sp, #16 - 800b2ec: bd80 pop {r7, pc} - 800b2ee: 46c0 nop ; (mov r8, r8) - 800b2f0: 01ffffff .word 0x01ffffff - -0800b2f4 : - * @param Timeout Timeout duration - * @retval HAL status - */ -HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, - uint32_t Tickstart, uint32_t Timeout) -{ - 800b2f4: b580 push {r7, lr} - 800b2f6: b094 sub sp, #80 ; 0x50 - 800b2f8: af00 add r7, sp, #0 - 800b2fa: 60f8 str r0, [r7, #12] - 800b2fc: 60b9 str r1, [r7, #8] - 800b2fe: 603b str r3, [r7, #0] - 800b300: 1dfb adds r3, r7, #7 - 800b302: 701a strb r2, [r3, #0] - /* Wait until flag is set */ - while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 800b304: e0a7 b.n 800b456 - { - /* Check for the Timeout */ - if (Timeout != HAL_MAX_DELAY) - 800b306: 6dbb ldr r3, [r7, #88] ; 0x58 - 800b308: 3301 adds r3, #1 - 800b30a: d100 bne.n 800b30e - 800b30c: e0a3 b.n 800b456 - { - if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 800b30e: f7fa ffa7 bl 8006260 - 800b312: 0002 movs r2, r0 - 800b314: 683b ldr r3, [r7, #0] - 800b316: 1ad3 subs r3, r2, r3 - 800b318: 6dba ldr r2, [r7, #88] ; 0x58 - 800b31a: 429a cmp r2, r3 - 800b31c: d302 bcc.n 800b324 - 800b31e: 6dbb ldr r3, [r7, #88] ; 0x58 - 800b320: 2b00 cmp r3, #0 - 800b322: d13f bne.n 800b3a4 - */ -__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800b324: f3ef 8310 mrs r3, PRIMASK - 800b328: 62bb str r3, [r7, #40] ; 0x28 - return(result); - 800b32a: 6abb ldr r3, [r7, #40] ; 0x28 - { - /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) - interrupts for the interrupt process */ - ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | - 800b32c: 647b str r3, [r7, #68] ; 0x44 - 800b32e: 2301 movs r3, #1 - 800b330: 62fb str r3, [r7, #44] ; 0x2c - \details Assigns the given value to the Priority Mask Register. - \param [in] priMask Priority Mask - */ -__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) -{ - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800b332: 6afb ldr r3, [r7, #44] ; 0x2c - 800b334: f383 8810 msr PRIMASK, r3 -} - 800b338: 46c0 nop ; (mov r8, r8) - 800b33a: 68fb ldr r3, [r7, #12] - 800b33c: 681b ldr r3, [r3, #0] - 800b33e: 681a ldr r2, [r3, #0] - 800b340: 68fb ldr r3, [r7, #12] - 800b342: 681b ldr r3, [r3, #0] - 800b344: 494e ldr r1, [pc, #312] ; (800b480 ) - 800b346: 400a ands r2, r1 - 800b348: 601a str r2, [r3, #0] - 800b34a: 6c7b ldr r3, [r7, #68] ; 0x44 - 800b34c: 633b str r3, [r7, #48] ; 0x30 - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800b34e: 6b3b ldr r3, [r7, #48] ; 0x30 - 800b350: f383 8810 msr PRIMASK, r3 -} - 800b354: 46c0 nop ; (mov r8, r8) - __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800b356: f3ef 8310 mrs r3, PRIMASK - 800b35a: 637b str r3, [r7, #52] ; 0x34 - return(result); - 800b35c: 6b7b ldr r3, [r7, #52] ; 0x34 - USART_CR1_TXEIE_TXFNFIE)); - ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 800b35e: 643b str r3, [r7, #64] ; 0x40 - 800b360: 2301 movs r3, #1 - 800b362: 63bb str r3, [r7, #56] ; 0x38 - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800b364: 6bbb ldr r3, [r7, #56] ; 0x38 - 800b366: f383 8810 msr PRIMASK, r3 -} - 800b36a: 46c0 nop ; (mov r8, r8) - 800b36c: 68fb ldr r3, [r7, #12] - 800b36e: 681b ldr r3, [r3, #0] - 800b370: 689a ldr r2, [r3, #8] - 800b372: 68fb ldr r3, [r7, #12] - 800b374: 681b ldr r3, [r3, #0] - 800b376: 2101 movs r1, #1 - 800b378: 438a bics r2, r1 - 800b37a: 609a str r2, [r3, #8] - 800b37c: 6c3b ldr r3, [r7, #64] ; 0x40 - 800b37e: 63fb str r3, [r7, #60] ; 0x3c - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800b380: 6bfb ldr r3, [r7, #60] ; 0x3c - 800b382: f383 8810 msr PRIMASK, r3 -} - 800b386: 46c0 nop ; (mov r8, r8) - - huart->gState = HAL_UART_STATE_READY; - 800b388: 68fb ldr r3, [r7, #12] - 800b38a: 2288 movs r2, #136 ; 0x88 - 800b38c: 2120 movs r1, #32 - 800b38e: 5099 str r1, [r3, r2] - huart->RxState = HAL_UART_STATE_READY; - 800b390: 68fb ldr r3, [r7, #12] - 800b392: 228c movs r2, #140 ; 0x8c - 800b394: 2120 movs r1, #32 - 800b396: 5099 str r1, [r3, r2] - - __HAL_UNLOCK(huart); - 800b398: 68fb ldr r3, [r7, #12] - 800b39a: 2284 movs r2, #132 ; 0x84 - 800b39c: 2100 movs r1, #0 - 800b39e: 5499 strb r1, [r3, r2] - - return HAL_TIMEOUT; - 800b3a0: 2303 movs r3, #3 - 800b3a2: e069 b.n 800b478 - } - - if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) - 800b3a4: 68fb ldr r3, [r7, #12] - 800b3a6: 681b ldr r3, [r3, #0] - 800b3a8: 681b ldr r3, [r3, #0] - 800b3aa: 2204 movs r2, #4 - 800b3ac: 4013 ands r3, r2 - 800b3ae: d052 beq.n 800b456 - { - if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) - 800b3b0: 68fb ldr r3, [r7, #12] - 800b3b2: 681b ldr r3, [r3, #0] - 800b3b4: 69da ldr r2, [r3, #28] - 800b3b6: 2380 movs r3, #128 ; 0x80 - 800b3b8: 011b lsls r3, r3, #4 - 800b3ba: 401a ands r2, r3 - 800b3bc: 2380 movs r3, #128 ; 0x80 - 800b3be: 011b lsls r3, r3, #4 - 800b3c0: 429a cmp r2, r3 - 800b3c2: d148 bne.n 800b456 - { - /* Clear Receiver Timeout flag*/ - __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); - 800b3c4: 68fb ldr r3, [r7, #12] - 800b3c6: 681b ldr r3, [r3, #0] - 800b3c8: 2280 movs r2, #128 ; 0x80 - 800b3ca: 0112 lsls r2, r2, #4 - 800b3cc: 621a str r2, [r3, #32] - __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800b3ce: f3ef 8310 mrs r3, PRIMASK - 800b3d2: 613b str r3, [r7, #16] - return(result); - 800b3d4: 693b ldr r3, [r7, #16] - - /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) - interrupts for the interrupt process */ - ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | - 800b3d6: 64fb str r3, [r7, #76] ; 0x4c - 800b3d8: 2301 movs r3, #1 - 800b3da: 617b str r3, [r7, #20] - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800b3dc: 697b ldr r3, [r7, #20] - 800b3de: f383 8810 msr PRIMASK, r3 -} - 800b3e2: 46c0 nop ; (mov r8, r8) - 800b3e4: 68fb ldr r3, [r7, #12] - 800b3e6: 681b ldr r3, [r3, #0] - 800b3e8: 681a ldr r2, [r3, #0] - 800b3ea: 68fb ldr r3, [r7, #12] - 800b3ec: 681b ldr r3, [r3, #0] - 800b3ee: 4924 ldr r1, [pc, #144] ; (800b480 ) - 800b3f0: 400a ands r2, r1 - 800b3f2: 601a str r2, [r3, #0] - 800b3f4: 6cfb ldr r3, [r7, #76] ; 0x4c - 800b3f6: 61bb str r3, [r7, #24] - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800b3f8: 69bb ldr r3, [r7, #24] - 800b3fa: f383 8810 msr PRIMASK, r3 -} - 800b3fe: 46c0 nop ; (mov r8, r8) - __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800b400: f3ef 8310 mrs r3, PRIMASK - 800b404: 61fb str r3, [r7, #28] - return(result); - 800b406: 69fb ldr r3, [r7, #28] - USART_CR1_TXEIE_TXFNFIE)); - ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 800b408: 64bb str r3, [r7, #72] ; 0x48 - 800b40a: 2301 movs r3, #1 - 800b40c: 623b str r3, [r7, #32] - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800b40e: 6a3b ldr r3, [r7, #32] - 800b410: f383 8810 msr PRIMASK, r3 -} - 800b414: 46c0 nop ; (mov r8, r8) - 800b416: 68fb ldr r3, [r7, #12] - 800b418: 681b ldr r3, [r3, #0] - 800b41a: 689a ldr r2, [r3, #8] - 800b41c: 68fb ldr r3, [r7, #12] - 800b41e: 681b ldr r3, [r3, #0] - 800b420: 2101 movs r1, #1 - 800b422: 438a bics r2, r1 - 800b424: 609a str r2, [r3, #8] - 800b426: 6cbb ldr r3, [r7, #72] ; 0x48 - 800b428: 627b str r3, [r7, #36] ; 0x24 - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800b42a: 6a7b ldr r3, [r7, #36] ; 0x24 - 800b42c: f383 8810 msr PRIMASK, r3 -} - 800b430: 46c0 nop ; (mov r8, r8) - - huart->gState = HAL_UART_STATE_READY; - 800b432: 68fb ldr r3, [r7, #12] - 800b434: 2288 movs r2, #136 ; 0x88 - 800b436: 2120 movs r1, #32 - 800b438: 5099 str r1, [r3, r2] - huart->RxState = HAL_UART_STATE_READY; - 800b43a: 68fb ldr r3, [r7, #12] - 800b43c: 228c movs r2, #140 ; 0x8c - 800b43e: 2120 movs r1, #32 - 800b440: 5099 str r1, [r3, r2] - huart->ErrorCode = HAL_UART_ERROR_RTO; - 800b442: 68fb ldr r3, [r7, #12] - 800b444: 2290 movs r2, #144 ; 0x90 - 800b446: 2120 movs r1, #32 - 800b448: 5099 str r1, [r3, r2] - - /* Process Unlocked */ - __HAL_UNLOCK(huart); - 800b44a: 68fb ldr r3, [r7, #12] - 800b44c: 2284 movs r2, #132 ; 0x84 - 800b44e: 2100 movs r1, #0 - 800b450: 5499 strb r1, [r3, r2] - - return HAL_TIMEOUT; - 800b452: 2303 movs r3, #3 - 800b454: e010 b.n 800b478 - while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 800b456: 68fb ldr r3, [r7, #12] - 800b458: 681b ldr r3, [r3, #0] - 800b45a: 69db ldr r3, [r3, #28] - 800b45c: 68ba ldr r2, [r7, #8] - 800b45e: 4013 ands r3, r2 - 800b460: 68ba ldr r2, [r7, #8] - 800b462: 1ad3 subs r3, r2, r3 - 800b464: 425a negs r2, r3 - 800b466: 4153 adcs r3, r2 - 800b468: b2db uxtb r3, r3 - 800b46a: 001a movs r2, r3 - 800b46c: 1dfb adds r3, r7, #7 - 800b46e: 781b ldrb r3, [r3, #0] - 800b470: 429a cmp r2, r3 - 800b472: d100 bne.n 800b476 - 800b474: e747 b.n 800b306 - } - } - } - } - return HAL_OK; - 800b476: 2300 movs r3, #0 -} - 800b478: 0018 movs r0, r3 - 800b47a: 46bd mov sp, r7 - 800b47c: b014 add sp, #80 ; 0x50 - 800b47e: bd80 pop {r7, pc} - 800b480: fffffe5f .word 0xfffffe5f - -0800b484 : - * @brief Disable the FIFO mode. - * @param huart UART handle. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart) -{ - 800b484: b580 push {r7, lr} - 800b486: b084 sub sp, #16 - 800b488: af00 add r7, sp, #0 - 800b48a: 6078 str r0, [r7, #4] - - /* Check parameters */ - assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); - - /* Process Locked */ - __HAL_LOCK(huart); - 800b48c: 687b ldr r3, [r7, #4] - 800b48e: 2284 movs r2, #132 ; 0x84 - 800b490: 5c9b ldrb r3, [r3, r2] - 800b492: 2b01 cmp r3, #1 - 800b494: d101 bne.n 800b49a - 800b496: 2302 movs r3, #2 - 800b498: e027 b.n 800b4ea - 800b49a: 687b ldr r3, [r7, #4] - 800b49c: 2284 movs r2, #132 ; 0x84 - 800b49e: 2101 movs r1, #1 - 800b4a0: 5499 strb r1, [r3, r2] - - huart->gState = HAL_UART_STATE_BUSY; - 800b4a2: 687b ldr r3, [r7, #4] - 800b4a4: 2288 movs r2, #136 ; 0x88 - 800b4a6: 2124 movs r1, #36 ; 0x24 - 800b4a8: 5099 str r1, [r3, r2] - - /* Save actual UART configuration */ - tmpcr1 = READ_REG(huart->Instance->CR1); - 800b4aa: 687b ldr r3, [r7, #4] - 800b4ac: 681b ldr r3, [r3, #0] - 800b4ae: 681b ldr r3, [r3, #0] - 800b4b0: 60fb str r3, [r7, #12] - - /* Disable UART */ - __HAL_UART_DISABLE(huart); - 800b4b2: 687b ldr r3, [r7, #4] - 800b4b4: 681b ldr r3, [r3, #0] - 800b4b6: 681a ldr r2, [r3, #0] - 800b4b8: 687b ldr r3, [r7, #4] - 800b4ba: 681b ldr r3, [r3, #0] - 800b4bc: 2101 movs r1, #1 - 800b4be: 438a bics r2, r1 - 800b4c0: 601a str r2, [r3, #0] - - /* Enable FIFO mode */ - CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN); - 800b4c2: 68fb ldr r3, [r7, #12] - 800b4c4: 4a0b ldr r2, [pc, #44] ; (800b4f4 ) - 800b4c6: 4013 ands r3, r2 - 800b4c8: 60fb str r3, [r7, #12] - huart->FifoMode = UART_FIFOMODE_DISABLE; - 800b4ca: 687b ldr r3, [r7, #4] - 800b4cc: 2200 movs r2, #0 - 800b4ce: 665a str r2, [r3, #100] ; 0x64 - - /* Restore UART configuration */ - WRITE_REG(huart->Instance->CR1, tmpcr1); - 800b4d0: 687b ldr r3, [r7, #4] - 800b4d2: 681b ldr r3, [r3, #0] - 800b4d4: 68fa ldr r2, [r7, #12] - 800b4d6: 601a str r2, [r3, #0] - - huart->gState = HAL_UART_STATE_READY; - 800b4d8: 687b ldr r3, [r7, #4] - 800b4da: 2288 movs r2, #136 ; 0x88 - 800b4dc: 2120 movs r1, #32 - 800b4de: 5099 str r1, [r3, r2] - - /* Process Unlocked */ - __HAL_UNLOCK(huart); - 800b4e0: 687b ldr r3, [r7, #4] - 800b4e2: 2284 movs r2, #132 ; 0x84 - 800b4e4: 2100 movs r1, #0 - 800b4e6: 5499 strb r1, [r3, r2] - - return HAL_OK; - 800b4e8: 2300 movs r3, #0 -} - 800b4ea: 0018 movs r0, r3 - 800b4ec: 46bd mov sp, r7 - 800b4ee: b004 add sp, #16 - 800b4f0: bd80 pop {r7, pc} - 800b4f2: 46c0 nop ; (mov r8, r8) - 800b4f4: dfffffff .word 0xdfffffff - -0800b4f8 : - * @arg @ref UART_TXFIFO_THRESHOLD_7_8 - * @arg @ref UART_TXFIFO_THRESHOLD_8_8 - * @retval HAL status - */ -HAL_StatusTypeDef HAL_UARTEx_SetTxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold) -{ - 800b4f8: b580 push {r7, lr} - 800b4fa: b084 sub sp, #16 - 800b4fc: af00 add r7, sp, #0 - 800b4fe: 6078 str r0, [r7, #4] - 800b500: 6039 str r1, [r7, #0] - /* Check parameters */ - assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); - assert_param(IS_UART_TXFIFO_THRESHOLD(Threshold)); - - /* Process Locked */ - __HAL_LOCK(huart); - 800b502: 687b ldr r3, [r7, #4] - 800b504: 2284 movs r2, #132 ; 0x84 - 800b506: 5c9b ldrb r3, [r3, r2] - 800b508: 2b01 cmp r3, #1 - 800b50a: d101 bne.n 800b510 - 800b50c: 2302 movs r3, #2 - 800b50e: e02e b.n 800b56e - 800b510: 687b ldr r3, [r7, #4] - 800b512: 2284 movs r2, #132 ; 0x84 - 800b514: 2101 movs r1, #1 - 800b516: 5499 strb r1, [r3, r2] - - huart->gState = HAL_UART_STATE_BUSY; - 800b518: 687b ldr r3, [r7, #4] - 800b51a: 2288 movs r2, #136 ; 0x88 - 800b51c: 2124 movs r1, #36 ; 0x24 - 800b51e: 5099 str r1, [r3, r2] - - /* Save actual UART configuration */ - tmpcr1 = READ_REG(huart->Instance->CR1); - 800b520: 687b ldr r3, [r7, #4] - 800b522: 681b ldr r3, [r3, #0] - 800b524: 681b ldr r3, [r3, #0] - 800b526: 60fb str r3, [r7, #12] - - /* Disable UART */ - __HAL_UART_DISABLE(huart); - 800b528: 687b ldr r3, [r7, #4] - 800b52a: 681b ldr r3, [r3, #0] - 800b52c: 681a ldr r2, [r3, #0] - 800b52e: 687b ldr r3, [r7, #4] - 800b530: 681b ldr r3, [r3, #0] - 800b532: 2101 movs r1, #1 - 800b534: 438a bics r2, r1 - 800b536: 601a str r2, [r3, #0] - - /* Update TX threshold configuration */ - MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold); - 800b538: 687b ldr r3, [r7, #4] - 800b53a: 681b ldr r3, [r3, #0] - 800b53c: 689b ldr r3, [r3, #8] - 800b53e: 00db lsls r3, r3, #3 - 800b540: 08d9 lsrs r1, r3, #3 - 800b542: 687b ldr r3, [r7, #4] - 800b544: 681b ldr r3, [r3, #0] - 800b546: 683a ldr r2, [r7, #0] - 800b548: 430a orrs r2, r1 - 800b54a: 609a str r2, [r3, #8] - - /* Determine the number of data to process during RX/TX ISR execution */ - UARTEx_SetNbDataToProcess(huart); - 800b54c: 687b ldr r3, [r7, #4] - 800b54e: 0018 movs r0, r3 - 800b550: f000 f854 bl 800b5fc - - /* Restore UART configuration */ - WRITE_REG(huart->Instance->CR1, tmpcr1); - 800b554: 687b ldr r3, [r7, #4] - 800b556: 681b ldr r3, [r3, #0] - 800b558: 68fa ldr r2, [r7, #12] - 800b55a: 601a str r2, [r3, #0] - - huart->gState = HAL_UART_STATE_READY; - 800b55c: 687b ldr r3, [r7, #4] - 800b55e: 2288 movs r2, #136 ; 0x88 - 800b560: 2120 movs r1, #32 - 800b562: 5099 str r1, [r3, r2] - - /* Process Unlocked */ - __HAL_UNLOCK(huart); - 800b564: 687b ldr r3, [r7, #4] - 800b566: 2284 movs r2, #132 ; 0x84 - 800b568: 2100 movs r1, #0 - 800b56a: 5499 strb r1, [r3, r2] - - return HAL_OK; - 800b56c: 2300 movs r3, #0 -} - 800b56e: 0018 movs r0, r3 - 800b570: 46bd mov sp, r7 - 800b572: b004 add sp, #16 - 800b574: bd80 pop {r7, pc} - ... - -0800b578 : - * @arg @ref UART_RXFIFO_THRESHOLD_7_8 - * @arg @ref UART_RXFIFO_THRESHOLD_8_8 - * @retval HAL status - */ -HAL_StatusTypeDef HAL_UARTEx_SetRxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold) -{ - 800b578: b580 push {r7, lr} - 800b57a: b084 sub sp, #16 - 800b57c: af00 add r7, sp, #0 - 800b57e: 6078 str r0, [r7, #4] - 800b580: 6039 str r1, [r7, #0] - /* Check the parameters */ - assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); - assert_param(IS_UART_RXFIFO_THRESHOLD(Threshold)); - - /* Process Locked */ - __HAL_LOCK(huart); - 800b582: 687b ldr r3, [r7, #4] - 800b584: 2284 movs r2, #132 ; 0x84 - 800b586: 5c9b ldrb r3, [r3, r2] - 800b588: 2b01 cmp r3, #1 - 800b58a: d101 bne.n 800b590 - 800b58c: 2302 movs r3, #2 - 800b58e: e02f b.n 800b5f0 - 800b590: 687b ldr r3, [r7, #4] - 800b592: 2284 movs r2, #132 ; 0x84 - 800b594: 2101 movs r1, #1 - 800b596: 5499 strb r1, [r3, r2] - - huart->gState = HAL_UART_STATE_BUSY; - 800b598: 687b ldr r3, [r7, #4] - 800b59a: 2288 movs r2, #136 ; 0x88 - 800b59c: 2124 movs r1, #36 ; 0x24 - 800b59e: 5099 str r1, [r3, r2] - - /* Save actual UART configuration */ - tmpcr1 = READ_REG(huart->Instance->CR1); - 800b5a0: 687b ldr r3, [r7, #4] - 800b5a2: 681b ldr r3, [r3, #0] - 800b5a4: 681b ldr r3, [r3, #0] - 800b5a6: 60fb str r3, [r7, #12] - - /* Disable UART */ - __HAL_UART_DISABLE(huart); - 800b5a8: 687b ldr r3, [r7, #4] - 800b5aa: 681b ldr r3, [r3, #0] - 800b5ac: 681a ldr r2, [r3, #0] - 800b5ae: 687b ldr r3, [r7, #4] - 800b5b0: 681b ldr r3, [r3, #0] - 800b5b2: 2101 movs r1, #1 - 800b5b4: 438a bics r2, r1 - 800b5b6: 601a str r2, [r3, #0] - - /* Update RX threshold configuration */ - MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold); - 800b5b8: 687b ldr r3, [r7, #4] - 800b5ba: 681b ldr r3, [r3, #0] - 800b5bc: 689b ldr r3, [r3, #8] - 800b5be: 4a0e ldr r2, [pc, #56] ; (800b5f8 ) - 800b5c0: 4013 ands r3, r2 - 800b5c2: 0019 movs r1, r3 - 800b5c4: 687b ldr r3, [r7, #4] - 800b5c6: 681b ldr r3, [r3, #0] - 800b5c8: 683a ldr r2, [r7, #0] - 800b5ca: 430a orrs r2, r1 - 800b5cc: 609a str r2, [r3, #8] - - /* Determine the number of data to process during RX/TX ISR execution */ - UARTEx_SetNbDataToProcess(huart); - 800b5ce: 687b ldr r3, [r7, #4] - 800b5d0: 0018 movs r0, r3 - 800b5d2: f000 f813 bl 800b5fc - - /* Restore UART configuration */ - WRITE_REG(huart->Instance->CR1, tmpcr1); - 800b5d6: 687b ldr r3, [r7, #4] - 800b5d8: 681b ldr r3, [r3, #0] - 800b5da: 68fa ldr r2, [r7, #12] - 800b5dc: 601a str r2, [r3, #0] - - huart->gState = HAL_UART_STATE_READY; - 800b5de: 687b ldr r3, [r7, #4] - 800b5e0: 2288 movs r2, #136 ; 0x88 - 800b5e2: 2120 movs r1, #32 - 800b5e4: 5099 str r1, [r3, r2] - - /* Process Unlocked */ - __HAL_UNLOCK(huart); - 800b5e6: 687b ldr r3, [r7, #4] - 800b5e8: 2284 movs r2, #132 ; 0x84 - 800b5ea: 2100 movs r1, #0 - 800b5ec: 5499 strb r1, [r3, r2] - - return HAL_OK; - 800b5ee: 2300 movs r3, #0 -} - 800b5f0: 0018 movs r0, r3 - 800b5f2: 46bd mov sp, r7 - 800b5f4: b004 add sp, #16 - 800b5f6: bd80 pop {r7, pc} - 800b5f8: f1ffffff .word 0xf1ffffff - -0800b5fc : - * the UART configuration registers. - * @param huart UART handle. - * @retval None - */ -static void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart) -{ - 800b5fc: b5f0 push {r4, r5, r6, r7, lr} - 800b5fe: b085 sub sp, #20 - 800b600: af00 add r7, sp, #0 - 800b602: 6078 str r0, [r7, #4] - uint8_t rx_fifo_threshold; - uint8_t tx_fifo_threshold; - static const uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U}; - static const uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U}; - - if (huart->FifoMode == UART_FIFOMODE_DISABLE) - 800b604: 687b ldr r3, [r7, #4] - 800b606: 6e5b ldr r3, [r3, #100] ; 0x64 - 800b608: 2b00 cmp r3, #0 - 800b60a: d108 bne.n 800b61e - { - huart->NbTxDataToProcess = 1U; - 800b60c: 687b ldr r3, [r7, #4] - 800b60e: 226a movs r2, #106 ; 0x6a - 800b610: 2101 movs r1, #1 - 800b612: 5299 strh r1, [r3, r2] - huart->NbRxDataToProcess = 1U; - 800b614: 687b ldr r3, [r7, #4] - 800b616: 2268 movs r2, #104 ; 0x68 - 800b618: 2101 movs r1, #1 - 800b61a: 5299 strh r1, [r3, r2] - huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - (uint16_t)denominator[tx_fifo_threshold]; - huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - (uint16_t)denominator[rx_fifo_threshold]; - } -} - 800b61c: e043 b.n 800b6a6 - rx_fifo_depth = RX_FIFO_DEPTH; - 800b61e: 260f movs r6, #15 - 800b620: 19bb adds r3, r7, r6 - 800b622: 2208 movs r2, #8 - 800b624: 701a strb r2, [r3, #0] - tx_fifo_depth = TX_FIFO_DEPTH; - 800b626: 200e movs r0, #14 - 800b628: 183b adds r3, r7, r0 - 800b62a: 2208 movs r2, #8 - 800b62c: 701a strb r2, [r3, #0] - rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos); - 800b62e: 687b ldr r3, [r7, #4] - 800b630: 681b ldr r3, [r3, #0] - 800b632: 689b ldr r3, [r3, #8] - 800b634: 0e5b lsrs r3, r3, #25 - 800b636: b2da uxtb r2, r3 - 800b638: 240d movs r4, #13 - 800b63a: 193b adds r3, r7, r4 - 800b63c: 2107 movs r1, #7 - 800b63e: 400a ands r2, r1 - 800b640: 701a strb r2, [r3, #0] - tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos); - 800b642: 687b ldr r3, [r7, #4] - 800b644: 681b ldr r3, [r3, #0] - 800b646: 689b ldr r3, [r3, #8] - 800b648: 0f5b lsrs r3, r3, #29 - 800b64a: b2da uxtb r2, r3 - 800b64c: 250c movs r5, #12 - 800b64e: 197b adds r3, r7, r5 - 800b650: 2107 movs r1, #7 - 800b652: 400a ands r2, r1 - 800b654: 701a strb r2, [r3, #0] - huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 800b656: 183b adds r3, r7, r0 - 800b658: 781b ldrb r3, [r3, #0] - 800b65a: 197a adds r2, r7, r5 - 800b65c: 7812 ldrb r2, [r2, #0] - 800b65e: 4914 ldr r1, [pc, #80] ; (800b6b0 ) - 800b660: 5c8a ldrb r2, [r1, r2] - 800b662: 435a muls r2, r3 - 800b664: 0010 movs r0, r2 - (uint16_t)denominator[tx_fifo_threshold]; - 800b666: 197b adds r3, r7, r5 - 800b668: 781b ldrb r3, [r3, #0] - 800b66a: 4a12 ldr r2, [pc, #72] ; (800b6b4 ) - 800b66c: 5cd3 ldrb r3, [r2, r3] - huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 800b66e: 0019 movs r1, r3 - 800b670: f7f4 fde6 bl 8000240 <__divsi3> - 800b674: 0003 movs r3, r0 - 800b676: b299 uxth r1, r3 - 800b678: 687b ldr r3, [r7, #4] - 800b67a: 226a movs r2, #106 ; 0x6a - 800b67c: 5299 strh r1, [r3, r2] - huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 800b67e: 19bb adds r3, r7, r6 - 800b680: 781b ldrb r3, [r3, #0] - 800b682: 193a adds r2, r7, r4 - 800b684: 7812 ldrb r2, [r2, #0] - 800b686: 490a ldr r1, [pc, #40] ; (800b6b0 ) - 800b688: 5c8a ldrb r2, [r1, r2] - 800b68a: 435a muls r2, r3 - 800b68c: 0010 movs r0, r2 - (uint16_t)denominator[rx_fifo_threshold]; - 800b68e: 193b adds r3, r7, r4 - 800b690: 781b ldrb r3, [r3, #0] - 800b692: 4a08 ldr r2, [pc, #32] ; (800b6b4 ) - 800b694: 5cd3 ldrb r3, [r2, r3] - huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 800b696: 0019 movs r1, r3 - 800b698: f7f4 fdd2 bl 8000240 <__divsi3> - 800b69c: 0003 movs r3, r0 - 800b69e: b299 uxth r1, r3 - 800b6a0: 687b ldr r3, [r7, #4] - 800b6a2: 2268 movs r2, #104 ; 0x68 - 800b6a4: 5299 strh r1, [r3, r2] -} - 800b6a6: 46c0 nop ; (mov r8, r8) - 800b6a8: 46bd mov sp, r7 - 800b6aa: b005 add sp, #20 - 800b6ac: bdf0 pop {r4, r5, r6, r7, pc} - 800b6ae: 46c0 nop ; (mov r8, r8) - 800b6b0: 08010f4c .word 0x08010f4c - 800b6b4: 08010f54 .word 0x08010f54 - -0800b6b8 <__NVIC_SetPriority>: -{ - 800b6b8: b590 push {r4, r7, lr} - 800b6ba: b083 sub sp, #12 - 800b6bc: af00 add r7, sp, #0 - 800b6be: 0002 movs r2, r0 - 800b6c0: 6039 str r1, [r7, #0] - 800b6c2: 1dfb adds r3, r7, #7 - 800b6c4: 701a strb r2, [r3, #0] - if ((int32_t)(IRQn) >= 0) - 800b6c6: 1dfb adds r3, r7, #7 - 800b6c8: 781b ldrb r3, [r3, #0] - 800b6ca: 2b7f cmp r3, #127 ; 0x7f - 800b6cc: d828 bhi.n 800b720 <__NVIC_SetPriority+0x68> - NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 800b6ce: 4a2f ldr r2, [pc, #188] ; (800b78c <__NVIC_SetPriority+0xd4>) - 800b6d0: 1dfb adds r3, r7, #7 - 800b6d2: 781b ldrb r3, [r3, #0] - 800b6d4: b25b sxtb r3, r3 - 800b6d6: 089b lsrs r3, r3, #2 - 800b6d8: 33c0 adds r3, #192 ; 0xc0 - 800b6da: 009b lsls r3, r3, #2 - 800b6dc: 589b ldr r3, [r3, r2] - 800b6de: 1dfa adds r2, r7, #7 - 800b6e0: 7812 ldrb r2, [r2, #0] - 800b6e2: 0011 movs r1, r2 - 800b6e4: 2203 movs r2, #3 - 800b6e6: 400a ands r2, r1 - 800b6e8: 00d2 lsls r2, r2, #3 - 800b6ea: 21ff movs r1, #255 ; 0xff - 800b6ec: 4091 lsls r1, r2 - 800b6ee: 000a movs r2, r1 - 800b6f0: 43d2 mvns r2, r2 - 800b6f2: 401a ands r2, r3 - 800b6f4: 0011 movs r1, r2 - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 800b6f6: 683b ldr r3, [r7, #0] - 800b6f8: 019b lsls r3, r3, #6 - 800b6fa: 22ff movs r2, #255 ; 0xff - 800b6fc: 401a ands r2, r3 - 800b6fe: 1dfb adds r3, r7, #7 - 800b700: 781b ldrb r3, [r3, #0] - 800b702: 0018 movs r0, r3 - 800b704: 2303 movs r3, #3 - 800b706: 4003 ands r3, r0 - 800b708: 00db lsls r3, r3, #3 - 800b70a: 409a lsls r2, r3 - NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 800b70c: 481f ldr r0, [pc, #124] ; (800b78c <__NVIC_SetPriority+0xd4>) - 800b70e: 1dfb adds r3, r7, #7 - 800b710: 781b ldrb r3, [r3, #0] - 800b712: b25b sxtb r3, r3 - 800b714: 089b lsrs r3, r3, #2 - 800b716: 430a orrs r2, r1 - 800b718: 33c0 adds r3, #192 ; 0xc0 - 800b71a: 009b lsls r3, r3, #2 - 800b71c: 501a str r2, [r3, r0] -} - 800b71e: e031 b.n 800b784 <__NVIC_SetPriority+0xcc> - SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 800b720: 4a1b ldr r2, [pc, #108] ; (800b790 <__NVIC_SetPriority+0xd8>) - 800b722: 1dfb adds r3, r7, #7 - 800b724: 781b ldrb r3, [r3, #0] - 800b726: 0019 movs r1, r3 - 800b728: 230f movs r3, #15 - 800b72a: 400b ands r3, r1 - 800b72c: 3b08 subs r3, #8 - 800b72e: 089b lsrs r3, r3, #2 - 800b730: 3306 adds r3, #6 - 800b732: 009b lsls r3, r3, #2 - 800b734: 18d3 adds r3, r2, r3 - 800b736: 3304 adds r3, #4 - 800b738: 681b ldr r3, [r3, #0] - 800b73a: 1dfa adds r2, r7, #7 - 800b73c: 7812 ldrb r2, [r2, #0] - 800b73e: 0011 movs r1, r2 - 800b740: 2203 movs r2, #3 - 800b742: 400a ands r2, r1 - 800b744: 00d2 lsls r2, r2, #3 - 800b746: 21ff movs r1, #255 ; 0xff - 800b748: 4091 lsls r1, r2 - 800b74a: 000a movs r2, r1 - 800b74c: 43d2 mvns r2, r2 - 800b74e: 401a ands r2, r3 - 800b750: 0011 movs r1, r2 - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 800b752: 683b ldr r3, [r7, #0] - 800b754: 019b lsls r3, r3, #6 - 800b756: 22ff movs r2, #255 ; 0xff - 800b758: 401a ands r2, r3 - 800b75a: 1dfb adds r3, r7, #7 - 800b75c: 781b ldrb r3, [r3, #0] - 800b75e: 0018 movs r0, r3 - 800b760: 2303 movs r3, #3 - 800b762: 4003 ands r3, r0 - 800b764: 00db lsls r3, r3, #3 - 800b766: 409a lsls r2, r3 - SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 800b768: 4809 ldr r0, [pc, #36] ; (800b790 <__NVIC_SetPriority+0xd8>) - 800b76a: 1dfb adds r3, r7, #7 - 800b76c: 781b ldrb r3, [r3, #0] - 800b76e: 001c movs r4, r3 - 800b770: 230f movs r3, #15 - 800b772: 4023 ands r3, r4 - 800b774: 3b08 subs r3, #8 - 800b776: 089b lsrs r3, r3, #2 - 800b778: 430a orrs r2, r1 - 800b77a: 3306 adds r3, #6 - 800b77c: 009b lsls r3, r3, #2 - 800b77e: 18c3 adds r3, r0, r3 - 800b780: 3304 adds r3, #4 - 800b782: 601a str r2, [r3, #0] -} - 800b784: 46c0 nop ; (mov r8, r8) - 800b786: 46bd mov sp, r7 - 800b788: b003 add sp, #12 - 800b78a: bd90 pop {r4, r7, pc} - 800b78c: e000e100 .word 0xe000e100 - 800b790: e000ed00 .word 0xe000ed00 - -0800b794 : - -/* - SysTick handler implementation that also clears overflow flag. -*/ -#if (USE_CUSTOM_SYSTICK_HANDLER_IMPLEMENTATION == 0) -void SysTick_Handler (void) { - 800b794: b580 push {r7, lr} - 800b796: af00 add r7, sp, #0 - /* Clear overflow flag */ - SysTick->CTRL; - 800b798: 4b05 ldr r3, [pc, #20] ; (800b7b0 ) - 800b79a: 681b ldr r3, [r3, #0] - - if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { - 800b79c: f002 f99a bl 800dad4 - 800b7a0: 0003 movs r3, r0 - 800b7a2: 2b01 cmp r3, #1 - 800b7a4: d001 beq.n 800b7aa - /* Call tick handler */ - xPortSysTickHandler(); - 800b7a6: f003 f80f bl 800e7c8 - } -} - 800b7aa: 46c0 nop ; (mov r8, r8) - 800b7ac: 46bd mov sp, r7 - 800b7ae: bd80 pop {r7, pc} - 800b7b0: e000e010 .word 0xe000e010 - -0800b7b4 : -#endif /* SysTick */ - -/* - Setup SVC to reset value. -*/ -__STATIC_INLINE void SVC_Setup (void) { - 800b7b4: b580 push {r7, lr} - 800b7b6: af00 add r7, sp, #0 -#if (__ARM_ARCH_7A__ == 0U) - /* Service Call interrupt might be configured before kernel start */ - /* and when its priority is lower or equal to BASEPRI, svc intruction */ - /* causes a Hard Fault. */ - NVIC_SetPriority (SVCall_IRQ_NBR, 0U); - 800b7b8: 2305 movs r3, #5 - 800b7ba: 425b negs r3, r3 - 800b7bc: 2100 movs r1, #0 - 800b7be: 0018 movs r0, r3 - 800b7c0: f7ff ff7a bl 800b6b8 <__NVIC_SetPriority> -#endif -} - 800b7c4: 46c0 nop ; (mov r8, r8) - 800b7c6: 46bd mov sp, r7 - 800b7c8: bd80 pop {r7, pc} - ... - -0800b7cc : -static uint32_t OS_Tick_GetOverflow (void); -/* Get OS Tick interval */ -static uint32_t OS_Tick_GetInterval (void); -/*---------------------------------------------------------------------------*/ - -osStatus_t osKernelInitialize (void) { - 800b7cc: b580 push {r7, lr} - 800b7ce: b082 sub sp, #8 - 800b7d0: af00 add r7, sp, #0 - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800b7d2: f3ef 8305 mrs r3, IPSR - 800b7d6: 603b str r3, [r7, #0] - return(result); - 800b7d8: 683b ldr r3, [r7, #0] - osStatus_t stat; - - if (IS_IRQ()) { - 800b7da: 2b00 cmp r3, #0 - 800b7dc: d003 beq.n 800b7e6 - stat = osErrorISR; - 800b7de: 2306 movs r3, #6 - 800b7e0: 425b negs r3, r3 - 800b7e2: 607b str r3, [r7, #4] - 800b7e4: e00c b.n 800b800 - } - else { - if (KernelState == osKernelInactive) { - 800b7e6: 4b09 ldr r3, [pc, #36] ; (800b80c ) - 800b7e8: 681b ldr r3, [r3, #0] - 800b7ea: 2b00 cmp r3, #0 - 800b7ec: d105 bne.n 800b7fa - EvrFreeRTOSSetup(0U); - #endif - #if defined(USE_FreeRTOS_HEAP_5) && (HEAP_5_REGION_SETUP == 1) - vPortDefineHeapRegions (configHEAP_5_REGIONS); - #endif - KernelState = osKernelReady; - 800b7ee: 4b07 ldr r3, [pc, #28] ; (800b80c ) - 800b7f0: 2201 movs r2, #1 - 800b7f2: 601a str r2, [r3, #0] - stat = osOK; - 800b7f4: 2300 movs r3, #0 - 800b7f6: 607b str r3, [r7, #4] - 800b7f8: e002 b.n 800b800 - } else { - stat = osError; - 800b7fa: 2301 movs r3, #1 - 800b7fc: 425b negs r3, r3 - 800b7fe: 607b str r3, [r7, #4] - } - } - - return (stat); - 800b800: 687b ldr r3, [r7, #4] -} - 800b802: 0018 movs r0, r3 - 800b804: 46bd mov sp, r7 - 800b806: b002 add sp, #8 - 800b808: bd80 pop {r7, pc} - 800b80a: 46c0 nop ; (mov r8, r8) - 800b80c: 20000428 .word 0x20000428 - -0800b810 : - } - - return (state); -} - -osStatus_t osKernelStart (void) { - 800b810: b580 push {r7, lr} - 800b812: b082 sub sp, #8 - 800b814: af00 add r7, sp, #0 - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800b816: f3ef 8305 mrs r3, IPSR - 800b81a: 603b str r3, [r7, #0] - return(result); - 800b81c: 683b ldr r3, [r7, #0] - osStatus_t stat; - - if (IS_IRQ()) { - 800b81e: 2b00 cmp r3, #0 - 800b820: d003 beq.n 800b82a - stat = osErrorISR; - 800b822: 2306 movs r3, #6 - 800b824: 425b negs r3, r3 - 800b826: 607b str r3, [r7, #4] - 800b828: e010 b.n 800b84c - } - else { - if (KernelState == osKernelReady) { - 800b82a: 4b0b ldr r3, [pc, #44] ; (800b858 ) - 800b82c: 681b ldr r3, [r3, #0] - 800b82e: 2b01 cmp r3, #1 - 800b830: d109 bne.n 800b846 - /* Ensure SVC priority is at the reset value */ - SVC_Setup(); - 800b832: f7ff ffbf bl 800b7b4 - /* Change state to enable IRQ masking check */ - KernelState = osKernelRunning; - 800b836: 4b08 ldr r3, [pc, #32] ; (800b858 ) - 800b838: 2202 movs r2, #2 - 800b83a: 601a str r2, [r3, #0] - /* Start the kernel scheduler */ - vTaskStartScheduler(); - 800b83c: f001 fd52 bl 800d2e4 - stat = osOK; - 800b840: 2300 movs r3, #0 - 800b842: 607b str r3, [r7, #4] - 800b844: e002 b.n 800b84c - } else { - stat = osError; - 800b846: 2301 movs r3, #1 - 800b848: 425b negs r3, r3 - 800b84a: 607b str r3, [r7, #4] - } - } - - return (stat); - 800b84c: 687b ldr r3, [r7, #4] -} - 800b84e: 0018 movs r0, r3 - 800b850: 46bd mov sp, r7 - 800b852: b002 add sp, #8 - 800b854: bd80 pop {r7, pc} - 800b856: 46c0 nop ; (mov r8, r8) - 800b858: 20000428 .word 0x20000428 - -0800b85c : - return (configCPU_CLOCK_HZ); -} - -/*---------------------------------------------------------------------------*/ - -osThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr) { - 800b85c: b5b0 push {r4, r5, r7, lr} - 800b85e: b08e sub sp, #56 ; 0x38 - 800b860: af04 add r7, sp, #16 - 800b862: 60f8 str r0, [r7, #12] - 800b864: 60b9 str r1, [r7, #8] - 800b866: 607a str r2, [r7, #4] - uint32_t stack; - TaskHandle_t hTask; - UBaseType_t prio; - int32_t mem; - - hTask = NULL; - 800b868: 2300 movs r3, #0 - 800b86a: 613b str r3, [r7, #16] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800b86c: f3ef 8305 mrs r3, IPSR - 800b870: 617b str r3, [r7, #20] - return(result); - 800b872: 697b ldr r3, [r7, #20] - - if (!IS_IRQ() && (func != NULL)) { - 800b874: 2b00 cmp r3, #0 - 800b876: d000 beq.n 800b87a - 800b878: e081 b.n 800b97e - 800b87a: 68fb ldr r3, [r7, #12] - 800b87c: 2b00 cmp r3, #0 - 800b87e: d100 bne.n 800b882 - 800b880: e07d b.n 800b97e - stack = configMINIMAL_STACK_SIZE; - 800b882: 2380 movs r3, #128 ; 0x80 - 800b884: 623b str r3, [r7, #32] - prio = (UBaseType_t)osPriorityNormal; - 800b886: 2318 movs r3, #24 - 800b888: 61fb str r3, [r7, #28] - - name = NULL; - 800b88a: 2300 movs r3, #0 - 800b88c: 627b str r3, [r7, #36] ; 0x24 - mem = -1; - 800b88e: 2301 movs r3, #1 - 800b890: 425b negs r3, r3 - 800b892: 61bb str r3, [r7, #24] - - if (attr != NULL) { - 800b894: 687b ldr r3, [r7, #4] - 800b896: 2b00 cmp r3, #0 - 800b898: d044 beq.n 800b924 - if (attr->name != NULL) { - 800b89a: 687b ldr r3, [r7, #4] - 800b89c: 681b ldr r3, [r3, #0] - 800b89e: 2b00 cmp r3, #0 - 800b8a0: d002 beq.n 800b8a8 - name = attr->name; - 800b8a2: 687b ldr r3, [r7, #4] - 800b8a4: 681b ldr r3, [r3, #0] - 800b8a6: 627b str r3, [r7, #36] ; 0x24 - } - if (attr->priority != osPriorityNone) { - 800b8a8: 687b ldr r3, [r7, #4] - 800b8aa: 699b ldr r3, [r3, #24] - 800b8ac: 2b00 cmp r3, #0 - 800b8ae: d002 beq.n 800b8b6 - prio = (UBaseType_t)attr->priority; - 800b8b0: 687b ldr r3, [r7, #4] - 800b8b2: 699b ldr r3, [r3, #24] - 800b8b4: 61fb str r3, [r7, #28] - } - - if ((prio < osPriorityIdle) || (prio > osPriorityISR) || ((attr->attr_bits & osThreadJoinable) == osThreadJoinable)) { - 800b8b6: 69fb ldr r3, [r7, #28] - 800b8b8: 2b00 cmp r3, #0 - 800b8ba: d007 beq.n 800b8cc - 800b8bc: 69fb ldr r3, [r7, #28] - 800b8be: 2b38 cmp r3, #56 ; 0x38 - 800b8c0: d804 bhi.n 800b8cc - 800b8c2: 687b ldr r3, [r7, #4] - 800b8c4: 685b ldr r3, [r3, #4] - 800b8c6: 2201 movs r2, #1 - 800b8c8: 4013 ands r3, r2 - 800b8ca: d001 beq.n 800b8d0 - return (NULL); - 800b8cc: 2300 movs r3, #0 - 800b8ce: e057 b.n 800b980 - } - - if (attr->stack_size > 0U) { - 800b8d0: 687b ldr r3, [r7, #4] - 800b8d2: 695b ldr r3, [r3, #20] - 800b8d4: 2b00 cmp r3, #0 - 800b8d6: d003 beq.n 800b8e0 - /* In FreeRTOS stack is not in bytes, but in sizeof(StackType_t) which is 4 on ARM ports. */ - /* Stack size should be therefore 4 byte aligned in order to avoid division caused side effects */ - stack = attr->stack_size / sizeof(StackType_t); - 800b8d8: 687b ldr r3, [r7, #4] - 800b8da: 695b ldr r3, [r3, #20] - 800b8dc: 089b lsrs r3, r3, #2 - 800b8de: 623b str r3, [r7, #32] - } - - if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticTask_t)) && - 800b8e0: 687b ldr r3, [r7, #4] - 800b8e2: 689b ldr r3, [r3, #8] - 800b8e4: 2b00 cmp r3, #0 - 800b8e6: d00e beq.n 800b906 - 800b8e8: 687b ldr r3, [r7, #4] - 800b8ea: 68db ldr r3, [r3, #12] - 800b8ec: 2bbb cmp r3, #187 ; 0xbb - 800b8ee: d90a bls.n 800b906 - (attr->stack_mem != NULL) && (attr->stack_size > 0U)) { - 800b8f0: 687b ldr r3, [r7, #4] - 800b8f2: 691b ldr r3, [r3, #16] - if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticTask_t)) && - 800b8f4: 2b00 cmp r3, #0 - 800b8f6: d006 beq.n 800b906 - (attr->stack_mem != NULL) && (attr->stack_size > 0U)) { - 800b8f8: 687b ldr r3, [r7, #4] - 800b8fa: 695b ldr r3, [r3, #20] - 800b8fc: 2b00 cmp r3, #0 - 800b8fe: d002 beq.n 800b906 - mem = 1; - 800b900: 2301 movs r3, #1 - 800b902: 61bb str r3, [r7, #24] - 800b904: e010 b.n 800b928 - } - else { - if ((attr->cb_mem == NULL) && (attr->cb_size == 0U) && (attr->stack_mem == NULL)) { - 800b906: 687b ldr r3, [r7, #4] - 800b908: 689b ldr r3, [r3, #8] - 800b90a: 2b00 cmp r3, #0 - 800b90c: d10c bne.n 800b928 - 800b90e: 687b ldr r3, [r7, #4] - 800b910: 68db ldr r3, [r3, #12] - 800b912: 2b00 cmp r3, #0 - 800b914: d108 bne.n 800b928 - 800b916: 687b ldr r3, [r7, #4] - 800b918: 691b ldr r3, [r3, #16] - 800b91a: 2b00 cmp r3, #0 - 800b91c: d104 bne.n 800b928 - mem = 0; - 800b91e: 2300 movs r3, #0 - 800b920: 61bb str r3, [r7, #24] - 800b922: e001 b.n 800b928 - } - } - } - else { - mem = 0; - 800b924: 2300 movs r3, #0 - 800b926: 61bb str r3, [r7, #24] - } - - if (mem == 1) { - 800b928: 69bb ldr r3, [r7, #24] - 800b92a: 2b01 cmp r3, #1 - 800b92c: d112 bne.n 800b954 - #if (configSUPPORT_STATIC_ALLOCATION == 1) - hTask = xTaskCreateStatic ((TaskFunction_t)func, name, stack, argument, prio, (StackType_t *)attr->stack_mem, - 800b92e: 687b ldr r3, [r7, #4] - 800b930: 691a ldr r2, [r3, #16] - (StaticTask_t *)attr->cb_mem); - 800b932: 687b ldr r3, [r7, #4] - 800b934: 689b ldr r3, [r3, #8] - hTask = xTaskCreateStatic ((TaskFunction_t)func, name, stack, argument, prio, (StackType_t *)attr->stack_mem, - 800b936: 68bd ldr r5, [r7, #8] - 800b938: 6a3c ldr r4, [r7, #32] - 800b93a: 6a79 ldr r1, [r7, #36] ; 0x24 - 800b93c: 68f8 ldr r0, [r7, #12] - 800b93e: 9302 str r3, [sp, #8] - 800b940: 9201 str r2, [sp, #4] - 800b942: 69fb ldr r3, [r7, #28] - 800b944: 9300 str r3, [sp, #0] - 800b946: 002b movs r3, r5 - 800b948: 0022 movs r2, r4 - 800b94a: f001 fb0c bl 800cf66 - 800b94e: 0003 movs r3, r0 - 800b950: 613b str r3, [r7, #16] - 800b952: e014 b.n 800b97e - #endif - } - else { - if (mem == 0) { - 800b954: 69bb ldr r3, [r7, #24] - 800b956: 2b00 cmp r3, #0 - 800b958: d111 bne.n 800b97e - #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) - if (xTaskCreate ((TaskFunction_t)func, name, (uint16_t)stack, argument, prio, &hTask) != pdPASS) { - 800b95a: 6a3b ldr r3, [r7, #32] - 800b95c: b29a uxth r2, r3 - 800b95e: 68bc ldr r4, [r7, #8] - 800b960: 6a79 ldr r1, [r7, #36] ; 0x24 - 800b962: 68f8 ldr r0, [r7, #12] - 800b964: 2310 movs r3, #16 - 800b966: 18fb adds r3, r7, r3 - 800b968: 9301 str r3, [sp, #4] - 800b96a: 69fb ldr r3, [r7, #28] - 800b96c: 9300 str r3, [sp, #0] - 800b96e: 0023 movs r3, r4 - 800b970: f001 fb3d bl 800cfee - 800b974: 0003 movs r3, r0 - 800b976: 2b01 cmp r3, #1 - 800b978: d001 beq.n 800b97e - hTask = NULL; - 800b97a: 2300 movs r3, #0 - 800b97c: 613b str r3, [r7, #16] - #endif - } - } - } - - return ((osThreadId_t)hTask); - 800b97e: 693b ldr r3, [r7, #16] -} - 800b980: 0018 movs r0, r3 - 800b982: 46bd mov sp, r7 - 800b984: b00a add sp, #40 ; 0x28 - 800b986: bdb0 pop {r4, r5, r7, pc} - -0800b988 : - /* Return flags before clearing */ - return (rflags); -} -#endif /* (configUSE_OS2_THREAD_FLAGS == 1) */ - -osStatus_t osDelay (uint32_t ticks) { - 800b988: b580 push {r7, lr} - 800b98a: b084 sub sp, #16 - 800b98c: af00 add r7, sp, #0 - 800b98e: 6078 str r0, [r7, #4] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800b990: f3ef 8305 mrs r3, IPSR - 800b994: 60bb str r3, [r7, #8] - return(result); - 800b996: 68bb ldr r3, [r7, #8] - osStatus_t stat; - - if (IS_IRQ()) { - 800b998: 2b00 cmp r3, #0 - 800b99a: d003 beq.n 800b9a4 - stat = osErrorISR; - 800b99c: 2306 movs r3, #6 - 800b99e: 425b negs r3, r3 - 800b9a0: 60fb str r3, [r7, #12] - 800b9a2: e008 b.n 800b9b6 - } - else { - stat = osOK; - 800b9a4: 2300 movs r3, #0 - 800b9a6: 60fb str r3, [r7, #12] - - if (ticks != 0U) { - 800b9a8: 687b ldr r3, [r7, #4] - 800b9aa: 2b00 cmp r3, #0 - 800b9ac: d003 beq.n 800b9b6 - vTaskDelay(ticks); - 800b9ae: 687b ldr r3, [r7, #4] - 800b9b0: 0018 movs r0, r3 - 800b9b2: f001 fc71 bl 800d298 - } - } - - return (stat); - 800b9b6: 68fb ldr r3, [r7, #12] -} - 800b9b8: 0018 movs r0, r3 - 800b9ba: 46bd mov sp, r7 - 800b9bc: b004 add sp, #16 - 800b9be: bd80 pop {r7, pc} - -0800b9c0 : -} - -/*---------------------------------------------------------------------------*/ -#if (configUSE_OS2_TIMER == 1) - -static void TimerCallback (TimerHandle_t hTimer) { - 800b9c0: b580 push {r7, lr} - 800b9c2: b084 sub sp, #16 - 800b9c4: af00 add r7, sp, #0 - 800b9c6: 6078 str r0, [r7, #4] - TimerCallback_t *callb; - - callb = (TimerCallback_t *)pvTimerGetTimerID (hTimer); - 800b9c8: 687b ldr r3, [r7, #4] - 800b9ca: 0018 movs r0, r3 - 800b9cc: f002 fdec bl 800e5a8 - 800b9d0: 0003 movs r3, r0 - 800b9d2: 60fb str r3, [r7, #12] - - if (callb != NULL) { - 800b9d4: 68fb ldr r3, [r7, #12] - 800b9d6: 2b00 cmp r3, #0 - 800b9d8: d005 beq.n 800b9e6 - callb->func (callb->arg); - 800b9da: 68fb ldr r3, [r7, #12] - 800b9dc: 681a ldr r2, [r3, #0] - 800b9de: 68fb ldr r3, [r7, #12] - 800b9e0: 685b ldr r3, [r3, #4] - 800b9e2: 0018 movs r0, r3 - 800b9e4: 4790 blx r2 - } -} - 800b9e6: 46c0 nop ; (mov r8, r8) - 800b9e8: 46bd mov sp, r7 - 800b9ea: b004 add sp, #16 - 800b9ec: bd80 pop {r7, pc} - ... - -0800b9f0 : - -osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr) { - 800b9f0: b590 push {r4, r7, lr} - 800b9f2: b08d sub sp, #52 ; 0x34 - 800b9f4: af02 add r7, sp, #8 - 800b9f6: 60f8 str r0, [r7, #12] - 800b9f8: 607a str r2, [r7, #4] - 800b9fa: 603b str r3, [r7, #0] - 800b9fc: 240b movs r4, #11 - 800b9fe: 193b adds r3, r7, r4 - 800ba00: 1c0a adds r2, r1, #0 - 800ba02: 701a strb r2, [r3, #0] - TimerHandle_t hTimer; - TimerCallback_t *callb; - UBaseType_t reload; - int32_t mem; - - hTimer = NULL; - 800ba04: 2300 movs r3, #0 - 800ba06: 623b str r3, [r7, #32] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800ba08: f3ef 8305 mrs r3, IPSR - 800ba0c: 613b str r3, [r7, #16] - return(result); - 800ba0e: 693b ldr r3, [r7, #16] - - if (!IS_IRQ() && (func != NULL)) { - 800ba10: 2b00 cmp r3, #0 - 800ba12: d000 beq.n 800ba16 - 800ba14: e06b b.n 800baee - 800ba16: 68fb ldr r3, [r7, #12] - 800ba18: 2b00 cmp r3, #0 - 800ba1a: d100 bne.n 800ba1e - 800ba1c: e067 b.n 800baee - /* Allocate memory to store callback function and argument */ - callb = pvPortMalloc (sizeof(TimerCallback_t)); - 800ba1e: 2008 movs r0, #8 - 800ba20: f002 ff0e bl 800e840 - 800ba24: 0003 movs r3, r0 - 800ba26: 617b str r3, [r7, #20] - - if (callb != NULL) { - 800ba28: 697b ldr r3, [r7, #20] - 800ba2a: 2b00 cmp r3, #0 - 800ba2c: d05f beq.n 800baee - callb->func = func; - 800ba2e: 697b ldr r3, [r7, #20] - 800ba30: 68fa ldr r2, [r7, #12] - 800ba32: 601a str r2, [r3, #0] - callb->arg = argument; - 800ba34: 697b ldr r3, [r7, #20] - 800ba36: 687a ldr r2, [r7, #4] - 800ba38: 605a str r2, [r3, #4] - - if (type == osTimerOnce) { - 800ba3a: 193b adds r3, r7, r4 - 800ba3c: 781b ldrb r3, [r3, #0] - 800ba3e: 2b00 cmp r3, #0 - 800ba40: d102 bne.n 800ba48 - reload = pdFALSE; - 800ba42: 2300 movs r3, #0 - 800ba44: 61fb str r3, [r7, #28] - 800ba46: e001 b.n 800ba4c - } else { - reload = pdTRUE; - 800ba48: 2301 movs r3, #1 - 800ba4a: 61fb str r3, [r7, #28] - } - - mem = -1; - 800ba4c: 2301 movs r3, #1 - 800ba4e: 425b negs r3, r3 - 800ba50: 61bb str r3, [r7, #24] - name = NULL; - 800ba52: 2300 movs r3, #0 - 800ba54: 627b str r3, [r7, #36] ; 0x24 - - if (attr != NULL) { - 800ba56: 683b ldr r3, [r7, #0] - 800ba58: 2b00 cmp r3, #0 - 800ba5a: d01c beq.n 800ba96 - if (attr->name != NULL) { - 800ba5c: 683b ldr r3, [r7, #0] - 800ba5e: 681b ldr r3, [r3, #0] - 800ba60: 2b00 cmp r3, #0 - 800ba62: d002 beq.n 800ba6a - name = attr->name; - 800ba64: 683b ldr r3, [r7, #0] - 800ba66: 681b ldr r3, [r3, #0] - 800ba68: 627b str r3, [r7, #36] ; 0x24 - } - - if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticTimer_t))) { - 800ba6a: 683b ldr r3, [r7, #0] - 800ba6c: 689b ldr r3, [r3, #8] - 800ba6e: 2b00 cmp r3, #0 - 800ba70: d006 beq.n 800ba80 - 800ba72: 683b ldr r3, [r7, #0] - 800ba74: 68db ldr r3, [r3, #12] - 800ba76: 2b2b cmp r3, #43 ; 0x2b - 800ba78: d902 bls.n 800ba80 - mem = 1; - 800ba7a: 2301 movs r3, #1 - 800ba7c: 61bb str r3, [r7, #24] - 800ba7e: e00c b.n 800ba9a - } - else { - if ((attr->cb_mem == NULL) && (attr->cb_size == 0U)) { - 800ba80: 683b ldr r3, [r7, #0] - 800ba82: 689b ldr r3, [r3, #8] - 800ba84: 2b00 cmp r3, #0 - 800ba86: d108 bne.n 800ba9a - 800ba88: 683b ldr r3, [r7, #0] - 800ba8a: 68db ldr r3, [r3, #12] - 800ba8c: 2b00 cmp r3, #0 - 800ba8e: d104 bne.n 800ba9a - mem = 0; - 800ba90: 2300 movs r3, #0 - 800ba92: 61bb str r3, [r7, #24] - 800ba94: e001 b.n 800ba9a - } - } - } - else { - mem = 0; - 800ba96: 2300 movs r3, #0 - 800ba98: 61bb str r3, [r7, #24] - } - - if (mem == 1) { - 800ba9a: 69bb ldr r3, [r7, #24] - 800ba9c: 2b01 cmp r3, #1 - 800ba9e: d10e bne.n 800babe - #if (configSUPPORT_STATIC_ALLOCATION == 1) - hTimer = xTimerCreateStatic (name, 1, reload, callb, TimerCallback, (StaticTimer_t *)attr->cb_mem); - 800baa0: 683b ldr r3, [r7, #0] - 800baa2: 689b ldr r3, [r3, #8] - 800baa4: 6979 ldr r1, [r7, #20] - 800baa6: 69fa ldr r2, [r7, #28] - 800baa8: 6a78 ldr r0, [r7, #36] ; 0x24 - 800baaa: 9301 str r3, [sp, #4] - 800baac: 4b12 ldr r3, [pc, #72] ; (800baf8 ) - 800baae: 9300 str r3, [sp, #0] - 800bab0: 000b movs r3, r1 - 800bab2: 2101 movs r1, #1 - 800bab4: f002 fa25 bl 800df02 - 800bab8: 0003 movs r3, r0 - 800baba: 623b str r3, [r7, #32] - 800babc: e00d b.n 800bada - #endif - } - else { - if (mem == 0) { - 800babe: 69bb ldr r3, [r7, #24] - 800bac0: 2b00 cmp r3, #0 - 800bac2: d10a bne.n 800bada - #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) - hTimer = xTimerCreate (name, 1, reload, callb, TimerCallback); - 800bac4: 6979 ldr r1, [r7, #20] - 800bac6: 69fa ldr r2, [r7, #28] - 800bac8: 6a78 ldr r0, [r7, #36] ; 0x24 - 800baca: 4b0b ldr r3, [pc, #44] ; (800baf8 ) - 800bacc: 9300 str r3, [sp, #0] - 800bace: 000b movs r3, r1 - 800bad0: 2101 movs r1, #1 - 800bad2: f002 f9f3 bl 800debc - 800bad6: 0003 movs r3, r0 - 800bad8: 623b str r3, [r7, #32] - #endif - } - } - - if ((hTimer == NULL) && (callb != NULL)) { - 800bada: 6a3b ldr r3, [r7, #32] - 800badc: 2b00 cmp r3, #0 - 800bade: d106 bne.n 800baee - 800bae0: 697b ldr r3, [r7, #20] - 800bae2: 2b00 cmp r3, #0 - 800bae4: d003 beq.n 800baee - vPortFree (callb); - 800bae6: 697b ldr r3, [r7, #20] - 800bae8: 0018 movs r0, r3 - 800baea: f002 ff55 bl 800e998 - } - } - } - - return ((osTimerId_t)hTimer); - 800baee: 6a3b ldr r3, [r7, #32] -} - 800baf0: 0018 movs r0, r3 - 800baf2: 46bd mov sp, r7 - 800baf4: b00b add sp, #44 ; 0x2c - 800baf6: bd90 pop {r4, r7, pc} - 800baf8: 0800b9c1 .word 0x0800b9c1 - -0800bafc : - } - - return (p); -} - -osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks) { - 800bafc: b580 push {r7, lr} - 800bafe: b088 sub sp, #32 - 800bb00: af02 add r7, sp, #8 - 800bb02: 6078 str r0, [r7, #4] - 800bb04: 6039 str r1, [r7, #0] - TimerHandle_t hTimer = (TimerHandle_t)timer_id; - 800bb06: 687b ldr r3, [r7, #4] - 800bb08: 613b str r3, [r7, #16] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800bb0a: f3ef 8305 mrs r3, IPSR - 800bb0e: 60fb str r3, [r7, #12] - return(result); - 800bb10: 68fb ldr r3, [r7, #12] - osStatus_t stat; - - if (IS_IRQ()) { - 800bb12: 2b00 cmp r3, #0 - 800bb14: d003 beq.n 800bb1e - stat = osErrorISR; - 800bb16: 2306 movs r3, #6 - 800bb18: 425b negs r3, r3 - 800bb1a: 617b str r3, [r7, #20] - 800bb1c: e017 b.n 800bb4e - } - else if (hTimer == NULL) { - 800bb1e: 693b ldr r3, [r7, #16] - 800bb20: 2b00 cmp r3, #0 - 800bb22: d103 bne.n 800bb2c - stat = osErrorParameter; - 800bb24: 2304 movs r3, #4 - 800bb26: 425b negs r3, r3 - 800bb28: 617b str r3, [r7, #20] - 800bb2a: e010 b.n 800bb4e - } - else { - if (xTimerChangePeriod (hTimer, ticks, 0) == pdPASS) { - 800bb2c: 683a ldr r2, [r7, #0] - 800bb2e: 6938 ldr r0, [r7, #16] - 800bb30: 2300 movs r3, #0 - 800bb32: 9300 str r3, [sp, #0] - 800bb34: 2300 movs r3, #0 - 800bb36: 2104 movs r1, #4 - 800bb38: f002 fa42 bl 800dfc0 - 800bb3c: 0003 movs r3, r0 - 800bb3e: 2b01 cmp r3, #1 - 800bb40: d102 bne.n 800bb48 - stat = osOK; - 800bb42: 2300 movs r3, #0 - 800bb44: 617b str r3, [r7, #20] - 800bb46: e002 b.n 800bb4e - } else { - stat = osErrorResource; - 800bb48: 2303 movs r3, #3 - 800bb4a: 425b negs r3, r3 - 800bb4c: 617b str r3, [r7, #20] - } - } - - return (stat); - 800bb4e: 697b ldr r3, [r7, #20] -} - 800bb50: 0018 movs r0, r3 - 800bb52: 46bd mov sp, r7 - 800bb54: b006 add sp, #24 - 800bb56: bd80 pop {r7, pc} - -0800bb58 : - -osStatus_t osTimerStop (osTimerId_t timer_id) { - 800bb58: b580 push {r7, lr} - 800bb5a: b088 sub sp, #32 - 800bb5c: af02 add r7, sp, #8 - 800bb5e: 6078 str r0, [r7, #4] - TimerHandle_t hTimer = (TimerHandle_t)timer_id; - 800bb60: 687b ldr r3, [r7, #4] - 800bb62: 613b str r3, [r7, #16] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800bb64: f3ef 8305 mrs r3, IPSR - 800bb68: 60fb str r3, [r7, #12] - return(result); - 800bb6a: 68fb ldr r3, [r7, #12] - osStatus_t stat; - - if (IS_IRQ()) { - 800bb6c: 2b00 cmp r3, #0 - 800bb6e: d003 beq.n 800bb78 - stat = osErrorISR; - 800bb70: 2306 movs r3, #6 - 800bb72: 425b negs r3, r3 - 800bb74: 617b str r3, [r7, #20] - 800bb76: e021 b.n 800bbbc - } - else if (hTimer == NULL) { - 800bb78: 693b ldr r3, [r7, #16] - 800bb7a: 2b00 cmp r3, #0 - 800bb7c: d103 bne.n 800bb86 - stat = osErrorParameter; - 800bb7e: 2304 movs r3, #4 - 800bb80: 425b negs r3, r3 - 800bb82: 617b str r3, [r7, #20] - 800bb84: e01a b.n 800bbbc - } - else { - if (xTimerIsTimerActive (hTimer) == pdFALSE) { - 800bb86: 693b ldr r3, [r7, #16] - 800bb88: 0018 movs r0, r3 - 800bb8a: f002 fced bl 800e568 - 800bb8e: 1e03 subs r3, r0, #0 - 800bb90: d103 bne.n 800bb9a - stat = osErrorResource; - 800bb92: 2303 movs r3, #3 - 800bb94: 425b negs r3, r3 - 800bb96: 617b str r3, [r7, #20] - 800bb98: e010 b.n 800bbbc - } - else { - if (xTimerStop (hTimer, 0) == pdPASS) { - 800bb9a: 6938 ldr r0, [r7, #16] - 800bb9c: 2300 movs r3, #0 - 800bb9e: 9300 str r3, [sp, #0] - 800bba0: 2300 movs r3, #0 - 800bba2: 2200 movs r2, #0 - 800bba4: 2103 movs r1, #3 - 800bba6: f002 fa0b bl 800dfc0 - 800bbaa: 0003 movs r3, r0 - 800bbac: 2b01 cmp r3, #1 - 800bbae: d102 bne.n 800bbb6 - stat = osOK; - 800bbb0: 2300 movs r3, #0 - 800bbb2: 617b str r3, [r7, #20] - 800bbb4: e002 b.n 800bbbc - } else { - stat = osError; - 800bbb6: 2301 movs r3, #1 - 800bbb8: 425b negs r3, r3 - 800bbba: 617b str r3, [r7, #20] - } - } - } - - return (stat); - 800bbbc: 697b ldr r3, [r7, #20] -} - 800bbbe: 0018 movs r0, r3 - 800bbc0: 46bd mov sp, r7 - 800bbc2: b006 add sp, #24 - 800bbc4: bd80 pop {r7, pc} - -0800bbc6 : -} - -/*---------------------------------------------------------------------------*/ -#if (configUSE_OS2_MUTEX == 1) - -osMutexId_t osMutexNew (const osMutexAttr_t *attr) { - 800bbc6: b580 push {r7, lr} - 800bbc8: b088 sub sp, #32 - 800bbca: af00 add r7, sp, #0 - 800bbcc: 6078 str r0, [r7, #4] - int32_t mem; - #if (configQUEUE_REGISTRY_SIZE > 0) - const char *name; - #endif - - hMutex = NULL; - 800bbce: 2300 movs r3, #0 - 800bbd0: 61fb str r3, [r7, #28] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800bbd2: f3ef 8305 mrs r3, IPSR - 800bbd6: 60bb str r3, [r7, #8] - return(result); - 800bbd8: 68bb ldr r3, [r7, #8] - - if (!IS_IRQ()) { - 800bbda: 2b00 cmp r3, #0 - 800bbdc: d000 beq.n 800bbe0 - 800bbde: e079 b.n 800bcd4 - if (attr != NULL) { - 800bbe0: 687b ldr r3, [r7, #4] - 800bbe2: 2b00 cmp r3, #0 - 800bbe4: d003 beq.n 800bbee - type = attr->attr_bits; - 800bbe6: 687b ldr r3, [r7, #4] - 800bbe8: 685b ldr r3, [r3, #4] - 800bbea: 61bb str r3, [r7, #24] - 800bbec: e001 b.n 800bbf2 - } else { - type = 0U; - 800bbee: 2300 movs r3, #0 - 800bbf0: 61bb str r3, [r7, #24] - } - - if ((type & osMutexRecursive) == osMutexRecursive) { - 800bbf2: 69bb ldr r3, [r7, #24] - 800bbf4: 2201 movs r2, #1 - 800bbf6: 4013 ands r3, r2 - 800bbf8: d002 beq.n 800bc00 - rmtx = 1U; - 800bbfa: 2301 movs r3, #1 - 800bbfc: 617b str r3, [r7, #20] - 800bbfe: e001 b.n 800bc04 - } else { - rmtx = 0U; - 800bc00: 2300 movs r3, #0 - 800bc02: 617b str r3, [r7, #20] - } - - if ((type & osMutexRobust) != osMutexRobust) { - 800bc04: 69bb ldr r3, [r7, #24] - 800bc06: 2208 movs r2, #8 - 800bc08: 4013 ands r3, r2 - 800bc0a: d000 beq.n 800bc0e - 800bc0c: e062 b.n 800bcd4 - mem = -1; - 800bc0e: 2301 movs r3, #1 - 800bc10: 425b negs r3, r3 - 800bc12: 613b str r3, [r7, #16] - - if (attr != NULL) { - 800bc14: 687b ldr r3, [r7, #4] - 800bc16: 2b00 cmp r3, #0 - 800bc18: d015 beq.n 800bc46 - if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticSemaphore_t))) { - 800bc1a: 687b ldr r3, [r7, #4] - 800bc1c: 689b ldr r3, [r3, #8] - 800bc1e: 2b00 cmp r3, #0 - 800bc20: d006 beq.n 800bc30 - 800bc22: 687b ldr r3, [r7, #4] - 800bc24: 68db ldr r3, [r3, #12] - 800bc26: 2b4f cmp r3, #79 ; 0x4f - 800bc28: d902 bls.n 800bc30 - mem = 1; - 800bc2a: 2301 movs r3, #1 - 800bc2c: 613b str r3, [r7, #16] - 800bc2e: e00c b.n 800bc4a - } - else { - if ((attr->cb_mem == NULL) && (attr->cb_size == 0U)) { - 800bc30: 687b ldr r3, [r7, #4] - 800bc32: 689b ldr r3, [r3, #8] - 800bc34: 2b00 cmp r3, #0 - 800bc36: d108 bne.n 800bc4a - 800bc38: 687b ldr r3, [r7, #4] - 800bc3a: 68db ldr r3, [r3, #12] - 800bc3c: 2b00 cmp r3, #0 - 800bc3e: d104 bne.n 800bc4a - mem = 0; - 800bc40: 2300 movs r3, #0 - 800bc42: 613b str r3, [r7, #16] - 800bc44: e001 b.n 800bc4a - } - } - } - else { - mem = 0; - 800bc46: 2300 movs r3, #0 - 800bc48: 613b str r3, [r7, #16] - } - - if (mem == 1) { - 800bc4a: 693b ldr r3, [r7, #16] - 800bc4c: 2b01 cmp r3, #1 - 800bc4e: d114 bne.n 800bc7a - #if (configSUPPORT_STATIC_ALLOCATION == 1) - if (rmtx != 0U) { - 800bc50: 697b ldr r3, [r7, #20] - 800bc52: 2b00 cmp r3, #0 - 800bc54: d008 beq.n 800bc68 - #if (configUSE_RECURSIVE_MUTEXES == 1) - hMutex = xSemaphoreCreateRecursiveMutexStatic (attr->cb_mem); - 800bc56: 687b ldr r3, [r7, #4] - 800bc58: 689b ldr r3, [r3, #8] - 800bc5a: 0019 movs r1, r3 - 800bc5c: 2004 movs r0, #4 - 800bc5e: f000 fc27 bl 800c4b0 - 800bc62: 0003 movs r3, r0 - 800bc64: 61fb str r3, [r7, #28] - 800bc66: e019 b.n 800bc9c - #endif - } - else { - hMutex = xSemaphoreCreateMutexStatic (attr->cb_mem); - 800bc68: 687b ldr r3, [r7, #4] - 800bc6a: 689b ldr r3, [r3, #8] - 800bc6c: 0019 movs r1, r3 - 800bc6e: 2001 movs r0, #1 - 800bc70: f000 fc1e bl 800c4b0 - 800bc74: 0003 movs r3, r0 - 800bc76: 61fb str r3, [r7, #28] - 800bc78: e010 b.n 800bc9c - } - #endif - } - else { - if (mem == 0) { - 800bc7a: 693b ldr r3, [r7, #16] - 800bc7c: 2b00 cmp r3, #0 - 800bc7e: d10d bne.n 800bc9c - #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) - if (rmtx != 0U) { - 800bc80: 697b ldr r3, [r7, #20] - 800bc82: 2b00 cmp r3, #0 - 800bc84: d005 beq.n 800bc92 - #if (configUSE_RECURSIVE_MUTEXES == 1) - hMutex = xSemaphoreCreateRecursiveMutex (); - 800bc86: 2004 movs r0, #4 - 800bc88: f000 fbf6 bl 800c478 - 800bc8c: 0003 movs r3, r0 - 800bc8e: 61fb str r3, [r7, #28] - 800bc90: e004 b.n 800bc9c - #endif - } else { - hMutex = xSemaphoreCreateMutex (); - 800bc92: 2001 movs r0, #1 - 800bc94: f000 fbf0 bl 800c478 - 800bc98: 0003 movs r3, r0 - 800bc9a: 61fb str r3, [r7, #28] - #endif - } - } - - #if (configQUEUE_REGISTRY_SIZE > 0) - if (hMutex != NULL) { - 800bc9c: 69fb ldr r3, [r7, #28] - 800bc9e: 2b00 cmp r3, #0 - 800bca0: d00e beq.n 800bcc0 - if (attr != NULL) { - 800bca2: 687b ldr r3, [r7, #4] - 800bca4: 2b00 cmp r3, #0 - 800bca6: d003 beq.n 800bcb0 - name = attr->name; - 800bca8: 687b ldr r3, [r7, #4] - 800bcaa: 681b ldr r3, [r3, #0] - 800bcac: 60fb str r3, [r7, #12] - 800bcae: e001 b.n 800bcb4 - } else { - name = NULL; - 800bcb0: 2300 movs r3, #0 - 800bcb2: 60fb str r3, [r7, #12] - } - vQueueAddToRegistry (hMutex, name); - 800bcb4: 68fa ldr r2, [r7, #12] - 800bcb6: 69fb ldr r3, [r7, #28] - 800bcb8: 0011 movs r1, r2 - 800bcba: 0018 movs r0, r3 - 800bcbc: f001 f8f8 bl 800ceb0 - } - #endif - - if ((hMutex != NULL) && (rmtx != 0U)) { - 800bcc0: 69fb ldr r3, [r7, #28] - 800bcc2: 2b00 cmp r3, #0 - 800bcc4: d006 beq.n 800bcd4 - 800bcc6: 697b ldr r3, [r7, #20] - 800bcc8: 2b00 cmp r3, #0 - 800bcca: d003 beq.n 800bcd4 - hMutex = (SemaphoreHandle_t)((uint32_t)hMutex | 1U); - 800bccc: 69fb ldr r3, [r7, #28] - 800bcce: 2201 movs r2, #1 - 800bcd0: 4313 orrs r3, r2 - 800bcd2: 61fb str r3, [r7, #28] - } - } - } - - return ((osMutexId_t)hMutex); - 800bcd4: 69fb ldr r3, [r7, #28] -} - 800bcd6: 0018 movs r0, r3 - 800bcd8: 46bd mov sp, r7 - 800bcda: b008 add sp, #32 - 800bcdc: bd80 pop {r7, pc} - -0800bcde : - -osStatus_t osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout) { - 800bcde: b580 push {r7, lr} - 800bce0: b086 sub sp, #24 - 800bce2: af00 add r7, sp, #0 - 800bce4: 6078 str r0, [r7, #4] - 800bce6: 6039 str r1, [r7, #0] - SemaphoreHandle_t hMutex; - osStatus_t stat; - uint32_t rmtx; - - hMutex = (SemaphoreHandle_t)((uint32_t)mutex_id & ~1U); - 800bce8: 687b ldr r3, [r7, #4] - 800bcea: 2201 movs r2, #1 - 800bcec: 4393 bics r3, r2 - 800bcee: 613b str r3, [r7, #16] - - rmtx = (uint32_t)mutex_id & 1U; - 800bcf0: 687b ldr r3, [r7, #4] - 800bcf2: 2201 movs r2, #1 - 800bcf4: 4013 ands r3, r2 - 800bcf6: 60fb str r3, [r7, #12] - - stat = osOK; - 800bcf8: 2300 movs r3, #0 - 800bcfa: 617b str r3, [r7, #20] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800bcfc: f3ef 8305 mrs r3, IPSR - 800bd00: 60bb str r3, [r7, #8] - return(result); - 800bd02: 68bb ldr r3, [r7, #8] - - if (IS_IRQ()) { - 800bd04: 2b00 cmp r3, #0 - 800bd06: d003 beq.n 800bd10 - stat = osErrorISR; - 800bd08: 2306 movs r3, #6 - 800bd0a: 425b negs r3, r3 - 800bd0c: 617b str r3, [r7, #20] - 800bd0e: e030 b.n 800bd72 - } - else if (hMutex == NULL) { - 800bd10: 693b ldr r3, [r7, #16] - 800bd12: 2b00 cmp r3, #0 - 800bd14: d103 bne.n 800bd1e - stat = osErrorParameter; - 800bd16: 2304 movs r3, #4 - 800bd18: 425b negs r3, r3 - 800bd1a: 617b str r3, [r7, #20] - 800bd1c: e029 b.n 800bd72 - } - else { - if (rmtx != 0U) { - 800bd1e: 68fb ldr r3, [r7, #12] - 800bd20: 2b00 cmp r3, #0 - 800bd22: d013 beq.n 800bd4c - #if (configUSE_RECURSIVE_MUTEXES == 1) - if (xSemaphoreTakeRecursive (hMutex, timeout) != pdPASS) { - 800bd24: 683a ldr r2, [r7, #0] - 800bd26: 693b ldr r3, [r7, #16] - 800bd28: 0011 movs r1, r2 - 800bd2a: 0018 movs r0, r3 - 800bd2c: f000 fc0b bl 800c546 - 800bd30: 0003 movs r3, r0 - 800bd32: 2b01 cmp r3, #1 - 800bd34: d01d beq.n 800bd72 - if (timeout != 0U) { - 800bd36: 683b ldr r3, [r7, #0] - 800bd38: 2b00 cmp r3, #0 - 800bd3a: d003 beq.n 800bd44 - stat = osErrorTimeout; - 800bd3c: 2302 movs r3, #2 - 800bd3e: 425b negs r3, r3 - 800bd40: 617b str r3, [r7, #20] - 800bd42: e016 b.n 800bd72 - } else { - stat = osErrorResource; - 800bd44: 2303 movs r3, #3 - 800bd46: 425b negs r3, r3 - 800bd48: 617b str r3, [r7, #20] - 800bd4a: e012 b.n 800bd72 - } - } - #endif - } - else { - if (xSemaphoreTake (hMutex, timeout) != pdPASS) { - 800bd4c: 683a ldr r2, [r7, #0] - 800bd4e: 693b ldr r3, [r7, #16] - 800bd50: 0011 movs r1, r2 - 800bd52: 0018 movs r0, r3 - 800bd54: f000 fe14 bl 800c980 - 800bd58: 0003 movs r3, r0 - 800bd5a: 2b01 cmp r3, #1 - 800bd5c: d009 beq.n 800bd72 - if (timeout != 0U) { - 800bd5e: 683b ldr r3, [r7, #0] - 800bd60: 2b00 cmp r3, #0 - 800bd62: d003 beq.n 800bd6c - stat = osErrorTimeout; - 800bd64: 2302 movs r3, #2 - 800bd66: 425b negs r3, r3 - 800bd68: 617b str r3, [r7, #20] - 800bd6a: e002 b.n 800bd72 - } else { - stat = osErrorResource; - 800bd6c: 2303 movs r3, #3 - 800bd6e: 425b negs r3, r3 - 800bd70: 617b str r3, [r7, #20] - } - } - } - } - - return (stat); - 800bd72: 697b ldr r3, [r7, #20] -} - 800bd74: 0018 movs r0, r3 - 800bd76: 46bd mov sp, r7 - 800bd78: b006 add sp, #24 - 800bd7a: bd80 pop {r7, pc} - -0800bd7c : - -osStatus_t osMutexRelease (osMutexId_t mutex_id) { - 800bd7c: b580 push {r7, lr} - 800bd7e: b086 sub sp, #24 - 800bd80: af00 add r7, sp, #0 - 800bd82: 6078 str r0, [r7, #4] - SemaphoreHandle_t hMutex; - osStatus_t stat; - uint32_t rmtx; - - hMutex = (SemaphoreHandle_t)((uint32_t)mutex_id & ~1U); - 800bd84: 687b ldr r3, [r7, #4] - 800bd86: 2201 movs r2, #1 - 800bd88: 4393 bics r3, r2 - 800bd8a: 613b str r3, [r7, #16] - - rmtx = (uint32_t)mutex_id & 1U; - 800bd8c: 687b ldr r3, [r7, #4] - 800bd8e: 2201 movs r2, #1 - 800bd90: 4013 ands r3, r2 - 800bd92: 60fb str r3, [r7, #12] - - stat = osOK; - 800bd94: 2300 movs r3, #0 - 800bd96: 617b str r3, [r7, #20] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800bd98: f3ef 8305 mrs r3, IPSR - 800bd9c: 60bb str r3, [r7, #8] - return(result); - 800bd9e: 68bb ldr r3, [r7, #8] - - if (IS_IRQ()) { - 800bda0: 2b00 cmp r3, #0 - 800bda2: d003 beq.n 800bdac - stat = osErrorISR; - 800bda4: 2306 movs r3, #6 - 800bda6: 425b negs r3, r3 - 800bda8: 617b str r3, [r7, #20] - 800bdaa: e020 b.n 800bdee - } - else if (hMutex == NULL) { - 800bdac: 693b ldr r3, [r7, #16] - 800bdae: 2b00 cmp r3, #0 - 800bdb0: d103 bne.n 800bdba - stat = osErrorParameter; - 800bdb2: 2304 movs r3, #4 - 800bdb4: 425b negs r3, r3 - 800bdb6: 617b str r3, [r7, #20] - 800bdb8: e019 b.n 800bdee - } - else { - if (rmtx != 0U) { - 800bdba: 68fb ldr r3, [r7, #12] - 800bdbc: 2b00 cmp r3, #0 - 800bdbe: d00a beq.n 800bdd6 - #if (configUSE_RECURSIVE_MUTEXES == 1) - if (xSemaphoreGiveRecursive (hMutex) != pdPASS) { - 800bdc0: 693b ldr r3, [r7, #16] - 800bdc2: 0018 movs r0, r3 - 800bdc4: f000 fb94 bl 800c4f0 - 800bdc8: 0003 movs r3, r0 - 800bdca: 2b01 cmp r3, #1 - 800bdcc: d00f beq.n 800bdee - stat = osErrorResource; - 800bdce: 2303 movs r3, #3 - 800bdd0: 425b negs r3, r3 - 800bdd2: 617b str r3, [r7, #20] - 800bdd4: e00b b.n 800bdee - } - #endif - } - else { - if (xSemaphoreGive (hMutex) != pdPASS) { - 800bdd6: 6938 ldr r0, [r7, #16] - 800bdd8: 2300 movs r3, #0 - 800bdda: 2200 movs r2, #0 - 800bddc: 2100 movs r1, #0 - 800bdde: f000 fbe2 bl 800c5a6 - 800bde2: 0003 movs r3, r0 - 800bde4: 2b01 cmp r3, #1 - 800bde6: d002 beq.n 800bdee - stat = osErrorResource; - 800bde8: 2303 movs r3, #3 - 800bdea: 425b negs r3, r3 - 800bdec: 617b str r3, [r7, #20] - } - } - } - - return (stat); - 800bdee: 697b ldr r3, [r7, #20] -} - 800bdf0: 0018 movs r0, r3 - 800bdf2: 46bd mov sp, r7 - 800bdf4: b006 add sp, #24 - 800bdf6: bd80 pop {r7, pc} - -0800bdf8 : - return (stat); -} - -/*---------------------------------------------------------------------------*/ - -osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr) { - 800bdf8: b590 push {r4, r7, lr} - 800bdfa: b08b sub sp, #44 ; 0x2c - 800bdfc: af02 add r7, sp, #8 - 800bdfe: 60f8 str r0, [r7, #12] - 800be00: 60b9 str r1, [r7, #8] - 800be02: 607a str r2, [r7, #4] - int32_t mem; - #if (configQUEUE_REGISTRY_SIZE > 0) - const char *name; - #endif - - hQueue = NULL; - 800be04: 2300 movs r3, #0 - 800be06: 61fb str r3, [r7, #28] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800be08: f3ef 8305 mrs r3, IPSR - 800be0c: 613b str r3, [r7, #16] - return(result); - 800be0e: 693b ldr r3, [r7, #16] - - if (!IS_IRQ() && (msg_count > 0U) && (msg_size > 0U)) { - 800be10: 2b00 cmp r3, #0 - 800be12: d000 beq.n 800be16 - 800be14: e064 b.n 800bee0 - 800be16: 68fb ldr r3, [r7, #12] - 800be18: 2b00 cmp r3, #0 - 800be1a: d100 bne.n 800be1e - 800be1c: e060 b.n 800bee0 - 800be1e: 68bb ldr r3, [r7, #8] - 800be20: 2b00 cmp r3, #0 - 800be22: d05d beq.n 800bee0 - mem = -1; - 800be24: 2301 movs r3, #1 - 800be26: 425b negs r3, r3 - 800be28: 61bb str r3, [r7, #24] - - if (attr != NULL) { - 800be2a: 687b ldr r3, [r7, #4] - 800be2c: 2b00 cmp r3, #0 - 800be2e: d028 beq.n 800be82 - if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticQueue_t)) && - 800be30: 687b ldr r3, [r7, #4] - 800be32: 689b ldr r3, [r3, #8] - 800be34: 2b00 cmp r3, #0 - 800be36: d011 beq.n 800be5c - 800be38: 687b ldr r3, [r7, #4] - 800be3a: 68db ldr r3, [r3, #12] - 800be3c: 2b4f cmp r3, #79 ; 0x4f - 800be3e: d90d bls.n 800be5c - (attr->mq_mem != NULL) && (attr->mq_size >= (msg_count * msg_size))) { - 800be40: 687b ldr r3, [r7, #4] - 800be42: 691b ldr r3, [r3, #16] - if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticQueue_t)) && - 800be44: 2b00 cmp r3, #0 - 800be46: d009 beq.n 800be5c - (attr->mq_mem != NULL) && (attr->mq_size >= (msg_count * msg_size))) { - 800be48: 687b ldr r3, [r7, #4] - 800be4a: 695a ldr r2, [r3, #20] - 800be4c: 68fb ldr r3, [r7, #12] - 800be4e: 68b9 ldr r1, [r7, #8] - 800be50: 434b muls r3, r1 - 800be52: 429a cmp r2, r3 - 800be54: d302 bcc.n 800be5c - mem = 1; - 800be56: 2301 movs r3, #1 - 800be58: 61bb str r3, [r7, #24] - 800be5a: e014 b.n 800be86 - } - else { - if ((attr->cb_mem == NULL) && (attr->cb_size == 0U) && - 800be5c: 687b ldr r3, [r7, #4] - 800be5e: 689b ldr r3, [r3, #8] - 800be60: 2b00 cmp r3, #0 - 800be62: d110 bne.n 800be86 - 800be64: 687b ldr r3, [r7, #4] - 800be66: 68db ldr r3, [r3, #12] - 800be68: 2b00 cmp r3, #0 - 800be6a: d10c bne.n 800be86 - (attr->mq_mem == NULL) && (attr->mq_size == 0U)) { - 800be6c: 687b ldr r3, [r7, #4] - 800be6e: 691b ldr r3, [r3, #16] - if ((attr->cb_mem == NULL) && (attr->cb_size == 0U) && - 800be70: 2b00 cmp r3, #0 - 800be72: d108 bne.n 800be86 - (attr->mq_mem == NULL) && (attr->mq_size == 0U)) { - 800be74: 687b ldr r3, [r7, #4] - 800be76: 695b ldr r3, [r3, #20] - 800be78: 2b00 cmp r3, #0 - 800be7a: d104 bne.n 800be86 - mem = 0; - 800be7c: 2300 movs r3, #0 - 800be7e: 61bb str r3, [r7, #24] - 800be80: e001 b.n 800be86 - } - } - } - else { - mem = 0; - 800be82: 2300 movs r3, #0 - 800be84: 61bb str r3, [r7, #24] - } - - if (mem == 1) { - 800be86: 69bb ldr r3, [r7, #24] - 800be88: 2b01 cmp r3, #1 - 800be8a: d10c bne.n 800bea6 - #if (configSUPPORT_STATIC_ALLOCATION == 1) - hQueue = xQueueCreateStatic (msg_count, msg_size, attr->mq_mem, attr->cb_mem); - 800be8c: 687b ldr r3, [r7, #4] - 800be8e: 691a ldr r2, [r3, #16] - 800be90: 687b ldr r3, [r7, #4] - 800be92: 689b ldr r3, [r3, #8] - 800be94: 68b9 ldr r1, [r7, #8] - 800be96: 68f8 ldr r0, [r7, #12] - 800be98: 2400 movs r4, #0 - 800be9a: 9400 str r4, [sp, #0] - 800be9c: f000 fa2d bl 800c2fa - 800bea0: 0003 movs r3, r0 - 800bea2: 61fb str r3, [r7, #28] - 800bea4: e00a b.n 800bebc - #endif - } - else { - if (mem == 0) { - 800bea6: 69bb ldr r3, [r7, #24] - 800bea8: 2b00 cmp r3, #0 - 800beaa: d107 bne.n 800bebc - #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) - hQueue = xQueueCreate (msg_count, msg_size); - 800beac: 68b9 ldr r1, [r7, #8] - 800beae: 68fb ldr r3, [r7, #12] - 800beb0: 2200 movs r2, #0 - 800beb2: 0018 movs r0, r3 - 800beb4: f000 fa6d bl 800c392 - 800beb8: 0003 movs r3, r0 - 800beba: 61fb str r3, [r7, #28] - #endif - } - } - - #if (configQUEUE_REGISTRY_SIZE > 0) - if (hQueue != NULL) { - 800bebc: 69fb ldr r3, [r7, #28] - 800bebe: 2b00 cmp r3, #0 - 800bec0: d00e beq.n 800bee0 - if (attr != NULL) { - 800bec2: 687b ldr r3, [r7, #4] - 800bec4: 2b00 cmp r3, #0 - 800bec6: d003 beq.n 800bed0 - name = attr->name; - 800bec8: 687b ldr r3, [r7, #4] - 800beca: 681b ldr r3, [r3, #0] - 800becc: 617b str r3, [r7, #20] - 800bece: e001 b.n 800bed4 - } else { - name = NULL; - 800bed0: 2300 movs r3, #0 - 800bed2: 617b str r3, [r7, #20] - } - vQueueAddToRegistry (hQueue, name); - 800bed4: 697a ldr r2, [r7, #20] - 800bed6: 69fb ldr r3, [r7, #28] - 800bed8: 0011 movs r1, r2 - 800beda: 0018 movs r0, r3 - 800bedc: f000 ffe8 bl 800ceb0 - } - #endif - - } - - return ((osMessageQueueId_t)hQueue); - 800bee0: 69fb ldr r3, [r7, #28] -} - 800bee2: 0018 movs r0, r3 - 800bee4: 46bd mov sp, r7 - 800bee6: b009 add sp, #36 ; 0x24 - 800bee8: bd90 pop {r4, r7, pc} - ... - -0800beec : - -osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout) { - 800beec: b580 push {r7, lr} - 800beee: b088 sub sp, #32 - 800bef0: af00 add r7, sp, #0 - 800bef2: 60f8 str r0, [r7, #12] - 800bef4: 60b9 str r1, [r7, #8] - 800bef6: 603b str r3, [r7, #0] - 800bef8: 1dfb adds r3, r7, #7 - 800befa: 701a strb r2, [r3, #0] - QueueHandle_t hQueue = (QueueHandle_t)mq_id; - 800befc: 68fb ldr r3, [r7, #12] - 800befe: 61bb str r3, [r7, #24] - osStatus_t stat; - BaseType_t yield; - - (void)msg_prio; /* Message priority is ignored */ - - stat = osOK; - 800bf00: 2300 movs r3, #0 - 800bf02: 61fb str r3, [r7, #28] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800bf04: f3ef 8305 mrs r3, IPSR - 800bf08: 617b str r3, [r7, #20] - return(result); - 800bf0a: 697b ldr r3, [r7, #20] - - if (IS_IRQ()) { - 800bf0c: 2b00 cmp r3, #0 - 800bf0e: d024 beq.n 800bf5a - if ((hQueue == NULL) || (msg_ptr == NULL) || (timeout != 0U)) { - 800bf10: 69bb ldr r3, [r7, #24] - 800bf12: 2b00 cmp r3, #0 - 800bf14: d005 beq.n 800bf22 - 800bf16: 68bb ldr r3, [r7, #8] - 800bf18: 2b00 cmp r3, #0 - 800bf1a: d002 beq.n 800bf22 - 800bf1c: 683b ldr r3, [r7, #0] - 800bf1e: 2b00 cmp r3, #0 - 800bf20: d003 beq.n 800bf2a - stat = osErrorParameter; - 800bf22: 2304 movs r3, #4 - 800bf24: 425b negs r3, r3 - 800bf26: 61fb str r3, [r7, #28] - 800bf28: e034 b.n 800bf94 - } - else { - yield = pdFALSE; - 800bf2a: 2300 movs r3, #0 - 800bf2c: 613b str r3, [r7, #16] - - if (xQueueSendToBackFromISR (hQueue, msg_ptr, &yield) != pdTRUE) { - 800bf2e: 2310 movs r3, #16 - 800bf30: 18fa adds r2, r7, r3 - 800bf32: 68b9 ldr r1, [r7, #8] - 800bf34: 69b8 ldr r0, [r7, #24] - 800bf36: 2300 movs r3, #0 - 800bf38: f000 fbf9 bl 800c72e - 800bf3c: 0003 movs r3, r0 - 800bf3e: 2b01 cmp r3, #1 - 800bf40: d003 beq.n 800bf4a - stat = osErrorResource; - 800bf42: 2303 movs r3, #3 - 800bf44: 425b negs r3, r3 - 800bf46: 61fb str r3, [r7, #28] - 800bf48: e024 b.n 800bf94 - } else { - portYIELD_FROM_ISR (yield); - 800bf4a: 693b ldr r3, [r7, #16] - 800bf4c: 2b00 cmp r3, #0 - 800bf4e: d021 beq.n 800bf94 - 800bf50: 4b13 ldr r3, [pc, #76] ; (800bfa0 ) - 800bf52: 2280 movs r2, #128 ; 0x80 - 800bf54: 0552 lsls r2, r2, #21 - 800bf56: 601a str r2, [r3, #0] - 800bf58: e01c b.n 800bf94 - } - } - } - else { - if ((hQueue == NULL) || (msg_ptr == NULL)) { - 800bf5a: 69bb ldr r3, [r7, #24] - 800bf5c: 2b00 cmp r3, #0 - 800bf5e: d002 beq.n 800bf66 - 800bf60: 68bb ldr r3, [r7, #8] - 800bf62: 2b00 cmp r3, #0 - 800bf64: d103 bne.n 800bf6e - stat = osErrorParameter; - 800bf66: 2304 movs r3, #4 - 800bf68: 425b negs r3, r3 - 800bf6a: 61fb str r3, [r7, #28] - 800bf6c: e012 b.n 800bf94 - } - else { - if (xQueueSendToBack (hQueue, msg_ptr, (TickType_t)timeout) != pdPASS) { - 800bf6e: 683a ldr r2, [r7, #0] - 800bf70: 68b9 ldr r1, [r7, #8] - 800bf72: 69b8 ldr r0, [r7, #24] - 800bf74: 2300 movs r3, #0 - 800bf76: f000 fb16 bl 800c5a6 - 800bf7a: 0003 movs r3, r0 - 800bf7c: 2b01 cmp r3, #1 - 800bf7e: d009 beq.n 800bf94 - if (timeout != 0U) { - 800bf80: 683b ldr r3, [r7, #0] - 800bf82: 2b00 cmp r3, #0 - 800bf84: d003 beq.n 800bf8e - stat = osErrorTimeout; - 800bf86: 2302 movs r3, #2 - 800bf88: 425b negs r3, r3 - 800bf8a: 61fb str r3, [r7, #28] - 800bf8c: e002 b.n 800bf94 - } else { - stat = osErrorResource; - 800bf8e: 2303 movs r3, #3 - 800bf90: 425b negs r3, r3 - 800bf92: 61fb str r3, [r7, #28] - } - } - } - } - - return (stat); - 800bf94: 69fb ldr r3, [r7, #28] -} - 800bf96: 0018 movs r0, r3 - 800bf98: 46bd mov sp, r7 - 800bf9a: b008 add sp, #32 - 800bf9c: bd80 pop {r7, pc} - 800bf9e: 46c0 nop ; (mov r8, r8) - 800bfa0: e000ed04 .word 0xe000ed04 - -0800bfa4 : - -osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout) { - 800bfa4: b580 push {r7, lr} - 800bfa6: b088 sub sp, #32 - 800bfa8: af00 add r7, sp, #0 - 800bfaa: 60f8 str r0, [r7, #12] - 800bfac: 60b9 str r1, [r7, #8] - 800bfae: 607a str r2, [r7, #4] - 800bfb0: 603b str r3, [r7, #0] - QueueHandle_t hQueue = (QueueHandle_t)mq_id; - 800bfb2: 68fb ldr r3, [r7, #12] - 800bfb4: 61bb str r3, [r7, #24] - osStatus_t stat; - BaseType_t yield; - - (void)msg_prio; /* Message priority is ignored */ - - stat = osOK; - 800bfb6: 2300 movs r3, #0 - 800bfb8: 61fb str r3, [r7, #28] - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800bfba: f3ef 8305 mrs r3, IPSR - 800bfbe: 617b str r3, [r7, #20] - return(result); - 800bfc0: 697b ldr r3, [r7, #20] - - if (IS_IRQ()) { - 800bfc2: 2b00 cmp r3, #0 - 800bfc4: d024 beq.n 800c010 - if ((hQueue == NULL) || (msg_ptr == NULL) || (timeout != 0U)) { - 800bfc6: 69bb ldr r3, [r7, #24] - 800bfc8: 2b00 cmp r3, #0 - 800bfca: d005 beq.n 800bfd8 - 800bfcc: 68bb ldr r3, [r7, #8] - 800bfce: 2b00 cmp r3, #0 - 800bfd0: d002 beq.n 800bfd8 - 800bfd2: 683b ldr r3, [r7, #0] - 800bfd4: 2b00 cmp r3, #0 - 800bfd6: d003 beq.n 800bfe0 - stat = osErrorParameter; - 800bfd8: 2304 movs r3, #4 - 800bfda: 425b negs r3, r3 - 800bfdc: 61fb str r3, [r7, #28] - 800bfde: e034 b.n 800c04a - } - else { - yield = pdFALSE; - 800bfe0: 2300 movs r3, #0 - 800bfe2: 613b str r3, [r7, #16] - - if (xQueueReceiveFromISR (hQueue, msg_ptr, &yield) != pdPASS) { - 800bfe4: 2310 movs r3, #16 - 800bfe6: 18fa adds r2, r7, r3 - 800bfe8: 68b9 ldr r1, [r7, #8] - 800bfea: 69bb ldr r3, [r7, #24] - 800bfec: 0018 movs r0, r3 - 800bfee: f000 fda1 bl 800cb34 - 800bff2: 0003 movs r3, r0 - 800bff4: 2b01 cmp r3, #1 - 800bff6: d003 beq.n 800c000 - stat = osErrorResource; - 800bff8: 2303 movs r3, #3 - 800bffa: 425b negs r3, r3 - 800bffc: 61fb str r3, [r7, #28] - 800bffe: e024 b.n 800c04a - } else { - portYIELD_FROM_ISR (yield); - 800c000: 693b ldr r3, [r7, #16] - 800c002: 2b00 cmp r3, #0 - 800c004: d021 beq.n 800c04a - 800c006: 4b13 ldr r3, [pc, #76] ; (800c054 ) - 800c008: 2280 movs r2, #128 ; 0x80 - 800c00a: 0552 lsls r2, r2, #21 - 800c00c: 601a str r2, [r3, #0] - 800c00e: e01c b.n 800c04a - } - } - } - else { - if ((hQueue == NULL) || (msg_ptr == NULL)) { - 800c010: 69bb ldr r3, [r7, #24] - 800c012: 2b00 cmp r3, #0 - 800c014: d002 beq.n 800c01c - 800c016: 68bb ldr r3, [r7, #8] - 800c018: 2b00 cmp r3, #0 - 800c01a: d103 bne.n 800c024 - stat = osErrorParameter; - 800c01c: 2304 movs r3, #4 - 800c01e: 425b negs r3, r3 - 800c020: 61fb str r3, [r7, #28] - 800c022: e012 b.n 800c04a - } - else { - if (xQueueReceive (hQueue, msg_ptr, (TickType_t)timeout) != pdPASS) { - 800c024: 683a ldr r2, [r7, #0] - 800c026: 68b9 ldr r1, [r7, #8] - 800c028: 69bb ldr r3, [r7, #24] - 800c02a: 0018 movs r0, r3 - 800c02c: f000 fbf3 bl 800c816 - 800c030: 0003 movs r3, r0 - 800c032: 2b01 cmp r3, #1 - 800c034: d009 beq.n 800c04a - if (timeout != 0U) { - 800c036: 683b ldr r3, [r7, #0] - 800c038: 2b00 cmp r3, #0 - 800c03a: d003 beq.n 800c044 - stat = osErrorTimeout; - 800c03c: 2302 movs r3, #2 - 800c03e: 425b negs r3, r3 - 800c040: 61fb str r3, [r7, #28] - 800c042: e002 b.n 800c04a - } else { - stat = osErrorResource; - 800c044: 2303 movs r3, #3 - 800c046: 425b negs r3, r3 - 800c048: 61fb str r3, [r7, #28] - } - } - } - } - - return (stat); - 800c04a: 69fb ldr r3, [r7, #28] -} - 800c04c: 0018 movs r0, r3 - 800c04e: 46bd mov sp, r7 - 800c050: b008 add sp, #32 - 800c052: bd80 pop {r7, pc} - 800c054: e000ed04 .word 0xe000ed04 - -0800c058 : - } - - return (size); -} - -uint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id) { - 800c058: b580 push {r7, lr} - 800c05a: b086 sub sp, #24 - 800c05c: af00 add r7, sp, #0 - 800c05e: 6078 str r0, [r7, #4] - QueueHandle_t hQueue = (QueueHandle_t)mq_id; - 800c060: 687b ldr r3, [r7, #4] - 800c062: 613b str r3, [r7, #16] - UBaseType_t count; - - if (hQueue == NULL) { - 800c064: 693b ldr r3, [r7, #16] - 800c066: 2b00 cmp r3, #0 - 800c068: d102 bne.n 800c070 - count = 0U; - 800c06a: 2300 movs r3, #0 - 800c06c: 617b str r3, [r7, #20] - 800c06e: e012 b.n 800c096 - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 800c070: f3ef 8305 mrs r3, IPSR - 800c074: 60fb str r3, [r7, #12] - return(result); - 800c076: 68fb ldr r3, [r7, #12] - } - else if (IS_IRQ()) { - 800c078: 2b00 cmp r3, #0 - 800c07a: d006 beq.n 800c08a - count = uxQueueMessagesWaitingFromISR (hQueue); - 800c07c: 693b ldr r3, [r7, #16] - 800c07e: 0018 movs r0, r3 - 800c080: f000 fdd0 bl 800cc24 - 800c084: 0003 movs r3, r0 - 800c086: 617b str r3, [r7, #20] - 800c088: e005 b.n 800c096 - } - else { - count = uxQueueMessagesWaiting (hQueue); - 800c08a: 693b ldr r3, [r7, #16] - 800c08c: 0018 movs r0, r3 - 800c08e: f000 fdb4 bl 800cbfa - 800c092: 0003 movs r3, r0 - 800c094: 617b str r3, [r7, #20] - } - - return ((uint32_t)count); - 800c096: 697b ldr r3, [r7, #20] -} - 800c098: 0018 movs r0, r3 - 800c09a: 46bd mov sp, r7 - 800c09c: b006 add sp, #24 - 800c09e: bd80 pop {r7, pc} - -0800c0a0 : - -/* - vApplicationGetIdleTaskMemory gets called when configSUPPORT_STATIC_ALLOCATION - equals to 1 and is required for static memory allocation support. -*/ -__WEAK void vApplicationGetIdleTaskMemory (StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize) { - 800c0a0: b580 push {r7, lr} - 800c0a2: b084 sub sp, #16 - 800c0a4: af00 add r7, sp, #0 - 800c0a6: 60f8 str r0, [r7, #12] - 800c0a8: 60b9 str r1, [r7, #8] - 800c0aa: 607a str r2, [r7, #4] - /* Idle task control block and stack */ - static StaticTask_t Idle_TCB; - static StackType_t Idle_Stack[configMINIMAL_STACK_SIZE]; - - *ppxIdleTaskTCBBuffer = &Idle_TCB; - 800c0ac: 68fb ldr r3, [r7, #12] - 800c0ae: 4a06 ldr r2, [pc, #24] ; (800c0c8 ) - 800c0b0: 601a str r2, [r3, #0] - *ppxIdleTaskStackBuffer = &Idle_Stack[0]; - 800c0b2: 68bb ldr r3, [r7, #8] - 800c0b4: 4a05 ldr r2, [pc, #20] ; (800c0cc ) - 800c0b6: 601a str r2, [r3, #0] - *pulIdleTaskStackSize = (uint32_t)configMINIMAL_STACK_SIZE; - 800c0b8: 687b ldr r3, [r7, #4] - 800c0ba: 2280 movs r2, #128 ; 0x80 - 800c0bc: 601a str r2, [r3, #0] -} - 800c0be: 46c0 nop ; (mov r8, r8) - 800c0c0: 46bd mov sp, r7 - 800c0c2: b004 add sp, #16 - 800c0c4: bd80 pop {r7, pc} - 800c0c6: 46c0 nop ; (mov r8, r8) - 800c0c8: 2000042c .word 0x2000042c - 800c0cc: 200004e8 .word 0x200004e8 - -0800c0d0 : - -/* - vApplicationGetTimerTaskMemory gets called when configSUPPORT_STATIC_ALLOCATION - equals to 1 and is required for static memory allocation support. -*/ -__WEAK void vApplicationGetTimerTaskMemory (StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize) { - 800c0d0: b580 push {r7, lr} - 800c0d2: b084 sub sp, #16 - 800c0d4: af00 add r7, sp, #0 - 800c0d6: 60f8 str r0, [r7, #12] - 800c0d8: 60b9 str r1, [r7, #8] - 800c0da: 607a str r2, [r7, #4] - /* Timer task control block and stack */ - static StaticTask_t Timer_TCB; - static StackType_t Timer_Stack[configTIMER_TASK_STACK_DEPTH]; - - *ppxTimerTaskTCBBuffer = &Timer_TCB; - 800c0dc: 68fb ldr r3, [r7, #12] - 800c0de: 4a06 ldr r2, [pc, #24] ; (800c0f8 ) - 800c0e0: 601a str r2, [r3, #0] - *ppxTimerTaskStackBuffer = &Timer_Stack[0]; - 800c0e2: 68bb ldr r3, [r7, #8] - 800c0e4: 4a05 ldr r2, [pc, #20] ; (800c0fc ) - 800c0e6: 601a str r2, [r3, #0] - *pulTimerTaskStackSize = (uint32_t)configTIMER_TASK_STACK_DEPTH; - 800c0e8: 687b ldr r3, [r7, #4] - 800c0ea: 2280 movs r2, #128 ; 0x80 - 800c0ec: 0052 lsls r2, r2, #1 - 800c0ee: 601a str r2, [r3, #0] -} - 800c0f0: 46c0 nop ; (mov r8, r8) - 800c0f2: 46bd mov sp, r7 - 800c0f4: b004 add sp, #16 - 800c0f6: bd80 pop {r7, pc} - 800c0f8: 200006e8 .word 0x200006e8 - 800c0fc: 200007a4 .word 0x200007a4 - -0800c100 : -/*----------------------------------------------------------- - * PUBLIC LIST API documented in list.h - *----------------------------------------------------------*/ - -void vListInitialise( List_t * const pxList ) -{ - 800c100: b580 push {r7, lr} - 800c102: b082 sub sp, #8 - 800c104: af00 add r7, sp, #0 - 800c106: 6078 str r0, [r7, #4] - /* The list structure contains a list item which is used to mark the - end of the list. To initialise the list the list end is inserted - as the only list entry. */ - pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ - 800c108: 687b ldr r3, [r7, #4] - 800c10a: 3308 adds r3, #8 - 800c10c: 001a movs r2, r3 - 800c10e: 687b ldr r3, [r7, #4] - 800c110: 605a str r2, [r3, #4] - - /* The list end value is the highest possible value in the list to - ensure it remains at the end of the list. */ - pxList->xListEnd.xItemValue = portMAX_DELAY; - 800c112: 687b ldr r3, [r7, #4] - 800c114: 2201 movs r2, #1 - 800c116: 4252 negs r2, r2 - 800c118: 609a str r2, [r3, #8] - - /* The list end next and previous pointers point to itself so we know - when the list is empty. */ - pxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ - 800c11a: 687b ldr r3, [r7, #4] - 800c11c: 3308 adds r3, #8 - 800c11e: 001a movs r2, r3 - 800c120: 687b ldr r3, [r7, #4] - 800c122: 60da str r2, [r3, #12] - pxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd );/*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ - 800c124: 687b ldr r3, [r7, #4] - 800c126: 3308 adds r3, #8 - 800c128: 001a movs r2, r3 - 800c12a: 687b ldr r3, [r7, #4] - 800c12c: 611a str r2, [r3, #16] - - pxList->uxNumberOfItems = ( UBaseType_t ) 0U; - 800c12e: 687b ldr r3, [r7, #4] - 800c130: 2200 movs r2, #0 - 800c132: 601a str r2, [r3, #0] - - /* Write known values into the list if - configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ - listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ); - listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ); -} - 800c134: 46c0 nop ; (mov r8, r8) - 800c136: 46bd mov sp, r7 - 800c138: b002 add sp, #8 - 800c13a: bd80 pop {r7, pc} - -0800c13c : -/*-----------------------------------------------------------*/ - -void vListInitialiseItem( ListItem_t * const pxItem ) -{ - 800c13c: b580 push {r7, lr} - 800c13e: b082 sub sp, #8 - 800c140: af00 add r7, sp, #0 - 800c142: 6078 str r0, [r7, #4] - /* Make sure the list item is not recorded as being on a list. */ - pxItem->pxContainer = NULL; - 800c144: 687b ldr r3, [r7, #4] - 800c146: 2200 movs r2, #0 - 800c148: 611a str r2, [r3, #16] - - /* Write known values into the list item if - configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ - listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); - listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); -} - 800c14a: 46c0 nop ; (mov r8, r8) - 800c14c: 46bd mov sp, r7 - 800c14e: b002 add sp, #8 - 800c150: bd80 pop {r7, pc} - -0800c152 : -/*-----------------------------------------------------------*/ - -void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) -{ - 800c152: b580 push {r7, lr} - 800c154: b084 sub sp, #16 - 800c156: af00 add r7, sp, #0 - 800c158: 6078 str r0, [r7, #4] - 800c15a: 6039 str r1, [r7, #0] -ListItem_t * const pxIndex = pxList->pxIndex; - 800c15c: 687b ldr r3, [r7, #4] - 800c15e: 685b ldr r3, [r3, #4] - 800c160: 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; - 800c162: 683b ldr r3, [r7, #0] - 800c164: 68fa ldr r2, [r7, #12] - 800c166: 605a str r2, [r3, #4] - pxNewListItem->pxPrevious = pxIndex->pxPrevious; - 800c168: 68fb ldr r3, [r7, #12] - 800c16a: 689a ldr r2, [r3, #8] - 800c16c: 683b ldr r3, [r7, #0] - 800c16e: 609a str r2, [r3, #8] - - /* Only used during decision coverage testing. */ - mtCOVERAGE_TEST_DELAY(); - - pxIndex->pxPrevious->pxNext = pxNewListItem; - 800c170: 68fb ldr r3, [r7, #12] - 800c172: 689b ldr r3, [r3, #8] - 800c174: 683a ldr r2, [r7, #0] - 800c176: 605a str r2, [r3, #4] - pxIndex->pxPrevious = pxNewListItem; - 800c178: 68fb ldr r3, [r7, #12] - 800c17a: 683a ldr r2, [r7, #0] - 800c17c: 609a str r2, [r3, #8] - - /* Remember which list the item is in. */ - pxNewListItem->pxContainer = pxList; - 800c17e: 683b ldr r3, [r7, #0] - 800c180: 687a ldr r2, [r7, #4] - 800c182: 611a str r2, [r3, #16] - - ( pxList->uxNumberOfItems )++; - 800c184: 687b ldr r3, [r7, #4] - 800c186: 681b ldr r3, [r3, #0] - 800c188: 1c5a adds r2, r3, #1 - 800c18a: 687b ldr r3, [r7, #4] - 800c18c: 601a str r2, [r3, #0] -} - 800c18e: 46c0 nop ; (mov r8, r8) - 800c190: 46bd mov sp, r7 - 800c192: b004 add sp, #16 - 800c194: bd80 pop {r7, pc} - -0800c196 : -/*-----------------------------------------------------------*/ - -void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) -{ - 800c196: b580 push {r7, lr} - 800c198: b084 sub sp, #16 - 800c19a: af00 add r7, sp, #0 - 800c19c: 6078 str r0, [r7, #4] - 800c19e: 6039 str r1, [r7, #0] -ListItem_t *pxIterator; -const TickType_t xValueOfInsertion = pxNewListItem->xItemValue; - 800c1a0: 683b ldr r3, [r7, #0] - 800c1a2: 681b ldr r3, [r3, #0] - 800c1a4: 60bb str r3, [r7, #8] - new list item should be placed after it. This ensures that TCBs which are - stored in ready lists (all of which have the same xItemValue value) get a - share of the CPU. However, if the xItemValue is the same as the back marker - the iteration loop below will not end. Therefore the value is checked - first, and the algorithm slightly modified if necessary. */ - if( xValueOfInsertion == portMAX_DELAY ) - 800c1a6: 68bb ldr r3, [r7, #8] - 800c1a8: 3301 adds r3, #1 - 800c1aa: d103 bne.n 800c1b4 - { - pxIterator = pxList->xListEnd.pxPrevious; - 800c1ac: 687b ldr r3, [r7, #4] - 800c1ae: 691b ldr r3, [r3, #16] - 800c1b0: 60fb str r3, [r7, #12] - 800c1b2: e00c b.n 800c1ce - 4) Using a queue or semaphore before it has been initialised or - before the scheduler has been started (are interrupts firing - before vTaskStartScheduler() has been called?). - **********************************************************************/ - - for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. *//*lint !e440 The iterator moves to a different value, not xValueOfInsertion. */ - 800c1b4: 687b ldr r3, [r7, #4] - 800c1b6: 3308 adds r3, #8 - 800c1b8: 60fb str r3, [r7, #12] - 800c1ba: e002 b.n 800c1c2 - 800c1bc: 68fb ldr r3, [r7, #12] - 800c1be: 685b ldr r3, [r3, #4] - 800c1c0: 60fb str r3, [r7, #12] - 800c1c2: 68fb ldr r3, [r7, #12] - 800c1c4: 685b ldr r3, [r3, #4] - 800c1c6: 681b ldr r3, [r3, #0] - 800c1c8: 68ba ldr r2, [r7, #8] - 800c1ca: 429a cmp r2, r3 - 800c1cc: d2f6 bcs.n 800c1bc - /* There is nothing to do here, just iterating to the wanted - insertion position. */ - } - } - - pxNewListItem->pxNext = pxIterator->pxNext; - 800c1ce: 68fb ldr r3, [r7, #12] - 800c1d0: 685a ldr r2, [r3, #4] - 800c1d2: 683b ldr r3, [r7, #0] - 800c1d4: 605a str r2, [r3, #4] - pxNewListItem->pxNext->pxPrevious = pxNewListItem; - 800c1d6: 683b ldr r3, [r7, #0] - 800c1d8: 685b ldr r3, [r3, #4] - 800c1da: 683a ldr r2, [r7, #0] - 800c1dc: 609a str r2, [r3, #8] - pxNewListItem->pxPrevious = pxIterator; - 800c1de: 683b ldr r3, [r7, #0] - 800c1e0: 68fa ldr r2, [r7, #12] - 800c1e2: 609a str r2, [r3, #8] - pxIterator->pxNext = pxNewListItem; - 800c1e4: 68fb ldr r3, [r7, #12] - 800c1e6: 683a ldr r2, [r7, #0] - 800c1e8: 605a str r2, [r3, #4] - - /* Remember which list the item is in. This allows fast removal of the - item later. */ - pxNewListItem->pxContainer = pxList; - 800c1ea: 683b ldr r3, [r7, #0] - 800c1ec: 687a ldr r2, [r7, #4] - 800c1ee: 611a str r2, [r3, #16] - - ( pxList->uxNumberOfItems )++; - 800c1f0: 687b ldr r3, [r7, #4] - 800c1f2: 681b ldr r3, [r3, #0] - 800c1f4: 1c5a adds r2, r3, #1 - 800c1f6: 687b ldr r3, [r7, #4] - 800c1f8: 601a str r2, [r3, #0] -} - 800c1fa: 46c0 nop ; (mov r8, r8) - 800c1fc: 46bd mov sp, r7 - 800c1fe: b004 add sp, #16 - 800c200: bd80 pop {r7, pc} - -0800c202 : -/*-----------------------------------------------------------*/ - -UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) -{ - 800c202: b580 push {r7, lr} - 800c204: b084 sub sp, #16 - 800c206: af00 add r7, sp, #0 - 800c208: 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; - 800c20a: 687b ldr r3, [r7, #4] - 800c20c: 691b ldr r3, [r3, #16] - 800c20e: 60fb str r3, [r7, #12] - - pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; - 800c210: 687b ldr r3, [r7, #4] - 800c212: 685b ldr r3, [r3, #4] - 800c214: 687a ldr r2, [r7, #4] - 800c216: 6892 ldr r2, [r2, #8] - 800c218: 609a str r2, [r3, #8] - pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; - 800c21a: 687b ldr r3, [r7, #4] - 800c21c: 689b ldr r3, [r3, #8] - 800c21e: 687a ldr r2, [r7, #4] - 800c220: 6852 ldr r2, [r2, #4] - 800c222: 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 ) - 800c224: 68fb ldr r3, [r7, #12] - 800c226: 685b ldr r3, [r3, #4] - 800c228: 687a ldr r2, [r7, #4] - 800c22a: 429a cmp r2, r3 - 800c22c: d103 bne.n 800c236 - { - pxList->pxIndex = pxItemToRemove->pxPrevious; - 800c22e: 687b ldr r3, [r7, #4] - 800c230: 689a ldr r2, [r3, #8] - 800c232: 68fb ldr r3, [r7, #12] - 800c234: 605a str r2, [r3, #4] - else - { - mtCOVERAGE_TEST_MARKER(); - } - - pxItemToRemove->pxContainer = NULL; - 800c236: 687b ldr r3, [r7, #4] - 800c238: 2200 movs r2, #0 - 800c23a: 611a str r2, [r3, #16] - ( pxList->uxNumberOfItems )--; - 800c23c: 68fb ldr r3, [r7, #12] - 800c23e: 681b ldr r3, [r3, #0] - 800c240: 1e5a subs r2, r3, #1 - 800c242: 68fb ldr r3, [r7, #12] - 800c244: 601a str r2, [r3, #0] - - return pxList->uxNumberOfItems; - 800c246: 68fb ldr r3, [r7, #12] - 800c248: 681b ldr r3, [r3, #0] -} - 800c24a: 0018 movs r0, r3 - 800c24c: 46bd mov sp, r7 - 800c24e: b004 add sp, #16 - 800c250: bd80 pop {r7, pc} - -0800c252 : - } \ - taskEXIT_CRITICAL() -/*-----------------------------------------------------------*/ - -BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) -{ - 800c252: b580 push {r7, lr} - 800c254: b084 sub sp, #16 - 800c256: af00 add r7, sp, #0 - 800c258: 6078 str r0, [r7, #4] - 800c25a: 6039 str r1, [r7, #0] -Queue_t * const pxQueue = xQueue; - 800c25c: 687b ldr r3, [r7, #4] - 800c25e: 60fb str r3, [r7, #12] - - configASSERT( pxQueue ); - 800c260: 68fb ldr r3, [r7, #12] - 800c262: 2b00 cmp r3, #0 - 800c264: d101 bne.n 800c26a - 800c266: b672 cpsid i - 800c268: e7fe b.n 800c268 - - taskENTER_CRITICAL(); - 800c26a: f002 fa51 bl 800e710 - { - pxQueue->u.xQueue.pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ - 800c26e: 68fb ldr r3, [r7, #12] - 800c270: 681a ldr r2, [r3, #0] - 800c272: 68fb ldr r3, [r7, #12] - 800c274: 6bd9 ldr r1, [r3, #60] ; 0x3c - 800c276: 68fb ldr r3, [r7, #12] - 800c278: 6c1b ldr r3, [r3, #64] ; 0x40 - 800c27a: 434b muls r3, r1 - 800c27c: 18d2 adds r2, r2, r3 - 800c27e: 68fb ldr r3, [r7, #12] - 800c280: 609a str r2, [r3, #8] - pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U; - 800c282: 68fb ldr r3, [r7, #12] - 800c284: 2200 movs r2, #0 - 800c286: 639a str r2, [r3, #56] ; 0x38 - pxQueue->pcWriteTo = pxQueue->pcHead; - 800c288: 68fb ldr r3, [r7, #12] - 800c28a: 681a ldr r2, [r3, #0] - 800c28c: 68fb ldr r3, [r7, #12] - 800c28e: 605a str r2, [r3, #4] - pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - 1U ) * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ - 800c290: 68fb ldr r3, [r7, #12] - 800c292: 681a ldr r2, [r3, #0] - 800c294: 68fb ldr r3, [r7, #12] - 800c296: 6bdb ldr r3, [r3, #60] ; 0x3c - 800c298: 1e59 subs r1, r3, #1 - 800c29a: 68fb ldr r3, [r7, #12] - 800c29c: 6c1b ldr r3, [r3, #64] ; 0x40 - 800c29e: 434b muls r3, r1 - 800c2a0: 18d2 adds r2, r2, r3 - 800c2a2: 68fb ldr r3, [r7, #12] - 800c2a4: 60da str r2, [r3, #12] - pxQueue->cRxLock = queueUNLOCKED; - 800c2a6: 68fb ldr r3, [r7, #12] - 800c2a8: 2244 movs r2, #68 ; 0x44 - 800c2aa: 21ff movs r1, #255 ; 0xff - 800c2ac: 5499 strb r1, [r3, r2] - pxQueue->cTxLock = queueUNLOCKED; - 800c2ae: 68fb ldr r3, [r7, #12] - 800c2b0: 2245 movs r2, #69 ; 0x45 - 800c2b2: 21ff movs r1, #255 ; 0xff - 800c2b4: 5499 strb r1, [r3, r2] - - if( xNewQueue == pdFALSE ) - 800c2b6: 683b ldr r3, [r7, #0] - 800c2b8: 2b00 cmp r3, #0 - 800c2ba: d10d bne.n 800c2d8 - /* If there are tasks blocked waiting to read from the queue, then - the tasks will remain blocked as after this function exits the queue - will still be empty. If there are tasks blocked waiting to write to - the queue, then one should be unblocked as after this function exits - it will be possible to write to it. */ - if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) - 800c2bc: 68fb ldr r3, [r7, #12] - 800c2be: 691b ldr r3, [r3, #16] - 800c2c0: 2b00 cmp r3, #0 - 800c2c2: d013 beq.n 800c2ec - { - if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) - 800c2c4: 68fb ldr r3, [r7, #12] - 800c2c6: 3310 adds r3, #16 - 800c2c8: 0018 movs r0, r3 - 800c2ca: f001 fa5d bl 800d788 - 800c2ce: 1e03 subs r3, r0, #0 - 800c2d0: d00c beq.n 800c2ec - { - queueYIELD_IF_USING_PREEMPTION(); - 800c2d2: f002 fa0d bl 800e6f0 - 800c2d6: e009 b.n 800c2ec - } - } - else - { - /* Ensure the event queues start in the correct state. */ - vListInitialise( &( pxQueue->xTasksWaitingToSend ) ); - 800c2d8: 68fb ldr r3, [r7, #12] - 800c2da: 3310 adds r3, #16 - 800c2dc: 0018 movs r0, r3 - 800c2de: f7ff ff0f bl 800c100 - vListInitialise( &( pxQueue->xTasksWaitingToReceive ) ); - 800c2e2: 68fb ldr r3, [r7, #12] - 800c2e4: 3324 adds r3, #36 ; 0x24 - 800c2e6: 0018 movs r0, r3 - 800c2e8: f7ff ff0a bl 800c100 - } - } - taskEXIT_CRITICAL(); - 800c2ec: f002 fa22 bl 800e734 - - /* A value is returned for calling semantic consistency with previous - versions. */ - return pdPASS; - 800c2f0: 2301 movs r3, #1 -} - 800c2f2: 0018 movs r0, r3 - 800c2f4: 46bd mov sp, r7 - 800c2f6: b004 add sp, #16 - 800c2f8: bd80 pop {r7, pc} - -0800c2fa : -/*-----------------------------------------------------------*/ - -#if( configSUPPORT_STATIC_ALLOCATION == 1 ) - - QueueHandle_t xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) - { - 800c2fa: b590 push {r4, r7, lr} - 800c2fc: b089 sub sp, #36 ; 0x24 - 800c2fe: af02 add r7, sp, #8 - 800c300: 60f8 str r0, [r7, #12] - 800c302: 60b9 str r1, [r7, #8] - 800c304: 607a str r2, [r7, #4] - 800c306: 603b str r3, [r7, #0] - Queue_t *pxNewQueue; - - configASSERT( uxQueueLength > ( UBaseType_t ) 0 ); - 800c308: 68fb ldr r3, [r7, #12] - 800c30a: 2b00 cmp r3, #0 - 800c30c: d101 bne.n 800c312 - 800c30e: b672 cpsid i - 800c310: e7fe b.n 800c310 - - /* The StaticQueue_t structure and the queue storage area must be - supplied. */ - configASSERT( pxStaticQueue != NULL ); - 800c312: 683b ldr r3, [r7, #0] - 800c314: 2b00 cmp r3, #0 - 800c316: d101 bne.n 800c31c - 800c318: b672 cpsid i - 800c31a: e7fe b.n 800c31a - - /* A queue storage area should be provided if the item size is not 0, and - should not be provided if the item size is 0. */ - configASSERT( !( ( pucQueueStorage != NULL ) && ( uxItemSize == 0 ) ) ); - 800c31c: 687b ldr r3, [r7, #4] - 800c31e: 2b00 cmp r3, #0 - 800c320: d002 beq.n 800c328 - 800c322: 68bb ldr r3, [r7, #8] - 800c324: 2b00 cmp r3, #0 - 800c326: d001 beq.n 800c32c - 800c328: 2301 movs r3, #1 - 800c32a: e000 b.n 800c32e - 800c32c: 2300 movs r3, #0 - 800c32e: 2b00 cmp r3, #0 - 800c330: d101 bne.n 800c336 - 800c332: b672 cpsid i - 800c334: e7fe b.n 800c334 - configASSERT( !( ( pucQueueStorage == NULL ) && ( uxItemSize != 0 ) ) ); - 800c336: 687b ldr r3, [r7, #4] - 800c338: 2b00 cmp r3, #0 - 800c33a: d102 bne.n 800c342 - 800c33c: 68bb ldr r3, [r7, #8] - 800c33e: 2b00 cmp r3, #0 - 800c340: d101 bne.n 800c346 - 800c342: 2301 movs r3, #1 - 800c344: e000 b.n 800c348 - 800c346: 2300 movs r3, #0 - 800c348: 2b00 cmp r3, #0 - 800c34a: d101 bne.n 800c350 - 800c34c: b672 cpsid i - 800c34e: e7fe b.n 800c34e - #if( configASSERT_DEFINED == 1 ) - { - /* Sanity check that the size of the structure used to declare a - variable of type StaticQueue_t or StaticSemaphore_t equals the size of - the real queue and semaphore structures. */ - volatile size_t xSize = sizeof( StaticQueue_t ); - 800c350: 2350 movs r3, #80 ; 0x50 - 800c352: 613b str r3, [r7, #16] - configASSERT( xSize == sizeof( Queue_t ) ); - 800c354: 693b ldr r3, [r7, #16] - 800c356: 2b50 cmp r3, #80 ; 0x50 - 800c358: d001 beq.n 800c35e - 800c35a: b672 cpsid i - 800c35c: e7fe b.n 800c35c - ( void ) xSize; /* Keeps lint quiet when configASSERT() is not defined. */ - 800c35e: 693b ldr r3, [r7, #16] - #endif /* configASSERT_DEFINED */ - - /* The address of a statically allocated queue was passed in, use it. - The address of a statically allocated storage area was also passed in - but is already set. */ - pxNewQueue = ( Queue_t * ) pxStaticQueue; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */ - 800c360: 683b ldr r3, [r7, #0] - 800c362: 617b str r3, [r7, #20] - - if( pxNewQueue != NULL ) - 800c364: 697b ldr r3, [r7, #20] - 800c366: 2b00 cmp r3, #0 - 800c368: d00e beq.n 800c388 - #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) - { - /* Queues can be allocated wither statically or dynamically, so - note this queue was allocated statically in case the queue is - later deleted. */ - pxNewQueue->ucStaticallyAllocated = pdTRUE; - 800c36a: 697b ldr r3, [r7, #20] - 800c36c: 2246 movs r2, #70 ; 0x46 - 800c36e: 2101 movs r1, #1 - 800c370: 5499 strb r1, [r3, r2] - } - #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ - - prvInitialiseNewQueue( uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue ); - 800c372: 2328 movs r3, #40 ; 0x28 - 800c374: 18fb adds r3, r7, r3 - 800c376: 781c ldrb r4, [r3, #0] - 800c378: 687a ldr r2, [r7, #4] - 800c37a: 68b9 ldr r1, [r7, #8] - 800c37c: 68f8 ldr r0, [r7, #12] - 800c37e: 697b ldr r3, [r7, #20] - 800c380: 9300 str r3, [sp, #0] - 800c382: 0023 movs r3, r4 - 800c384: f000 f837 bl 800c3f6 - { - traceQUEUE_CREATE_FAILED( ucQueueType ); - mtCOVERAGE_TEST_MARKER(); - } - - return pxNewQueue; - 800c388: 697b ldr r3, [r7, #20] - } - 800c38a: 0018 movs r0, r3 - 800c38c: 46bd mov sp, r7 - 800c38e: b007 add sp, #28 - 800c390: bd90 pop {r4, r7, pc} - -0800c392 : -/*-----------------------------------------------------------*/ - -#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) - - QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) - { - 800c392: b590 push {r4, r7, lr} - 800c394: b08b sub sp, #44 ; 0x2c - 800c396: af02 add r7, sp, #8 - 800c398: 60f8 str r0, [r7, #12] - 800c39a: 60b9 str r1, [r7, #8] - 800c39c: 1dfb adds r3, r7, #7 - 800c39e: 701a strb r2, [r3, #0] - Queue_t *pxNewQueue; - size_t xQueueSizeInBytes; - uint8_t *pucQueueStorage; - - configASSERT( uxQueueLength > ( UBaseType_t ) 0 ); - 800c3a0: 68fb ldr r3, [r7, #12] - 800c3a2: 2b00 cmp r3, #0 - 800c3a4: d101 bne.n 800c3aa - 800c3a6: b672 cpsid i - 800c3a8: e7fe b.n 800c3a8 - - /* Allocate enough space to hold the maximum number of items that - can be in the queue at any time. It is valid for uxItemSize to be - zero in the case the queue is used as a semaphore. */ - xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 800c3aa: 68fb ldr r3, [r7, #12] - 800c3ac: 68ba ldr r2, [r7, #8] - 800c3ae: 4353 muls r3, r2 - 800c3b0: 61fb str r3, [r7, #28] - alignment requirements of the Queue_t structure - which in this case - is an int8_t *. Therefore, whenever the stack alignment requirements - are greater than or equal to the pointer to char requirements the cast - is safe. In other cases alignment requirements are not strict (one or - two bytes). */ - pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) + xQueueSizeInBytes ); /*lint !e9087 !e9079 see comment above. */ - 800c3b2: 69fb ldr r3, [r7, #28] - 800c3b4: 3350 adds r3, #80 ; 0x50 - 800c3b6: 0018 movs r0, r3 - 800c3b8: f002 fa42 bl 800e840 - 800c3bc: 0003 movs r3, r0 - 800c3be: 61bb str r3, [r7, #24] - - if( pxNewQueue != NULL ) - 800c3c0: 69bb ldr r3, [r7, #24] - 800c3c2: 2b00 cmp r3, #0 - 800c3c4: d012 beq.n 800c3ec - { - /* Jump past the queue structure to find the location of the queue - storage area. */ - pucQueueStorage = ( uint8_t * ) pxNewQueue; - 800c3c6: 69bb ldr r3, [r7, #24] - 800c3c8: 617b str r3, [r7, #20] - pucQueueStorage += sizeof( Queue_t ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ - 800c3ca: 697b ldr r3, [r7, #20] - 800c3cc: 3350 adds r3, #80 ; 0x50 - 800c3ce: 617b str r3, [r7, #20] - #if( configSUPPORT_STATIC_ALLOCATION == 1 ) - { - /* Queues can be created either statically or dynamically, so - note this task was created dynamically in case it is later - deleted. */ - pxNewQueue->ucStaticallyAllocated = pdFALSE; - 800c3d0: 69bb ldr r3, [r7, #24] - 800c3d2: 2246 movs r2, #70 ; 0x46 - 800c3d4: 2100 movs r1, #0 - 800c3d6: 5499 strb r1, [r3, r2] - } - #endif /* configSUPPORT_STATIC_ALLOCATION */ - - prvInitialiseNewQueue( uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue ); - 800c3d8: 1dfb adds r3, r7, #7 - 800c3da: 781c ldrb r4, [r3, #0] - 800c3dc: 697a ldr r2, [r7, #20] - 800c3de: 68b9 ldr r1, [r7, #8] - 800c3e0: 68f8 ldr r0, [r7, #12] - 800c3e2: 69bb ldr r3, [r7, #24] - 800c3e4: 9300 str r3, [sp, #0] - 800c3e6: 0023 movs r3, r4 - 800c3e8: f000 f805 bl 800c3f6 - { - traceQUEUE_CREATE_FAILED( ucQueueType ); - mtCOVERAGE_TEST_MARKER(); - } - - return pxNewQueue; - 800c3ec: 69bb ldr r3, [r7, #24] - } - 800c3ee: 0018 movs r0, r3 - 800c3f0: 46bd mov sp, r7 - 800c3f2: b009 add sp, #36 ; 0x24 - 800c3f4: bd90 pop {r4, r7, pc} - -0800c3f6 : - -#endif /* configSUPPORT_STATIC_ALLOCATION */ -/*-----------------------------------------------------------*/ - -static void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue ) -{ - 800c3f6: b580 push {r7, lr} - 800c3f8: b084 sub sp, #16 - 800c3fa: af00 add r7, sp, #0 - 800c3fc: 60f8 str r0, [r7, #12] - 800c3fe: 60b9 str r1, [r7, #8] - 800c400: 607a str r2, [r7, #4] - 800c402: 001a movs r2, r3 - 800c404: 1cfb adds r3, r7, #3 - 800c406: 701a strb r2, [r3, #0] - /* Remove compiler warnings about unused parameters should - configUSE_TRACE_FACILITY not be set to 1. */ - ( void ) ucQueueType; - - if( uxItemSize == ( UBaseType_t ) 0 ) - 800c408: 68bb ldr r3, [r7, #8] - 800c40a: 2b00 cmp r3, #0 - 800c40c: d103 bne.n 800c416 - { - /* No RAM was allocated for the queue storage area, but PC head cannot - be set to NULL because NULL is used as a key to say the queue is used as - a mutex. Therefore just set pcHead to point to the queue as a benign - value that is known to be within the memory map. */ - pxNewQueue->pcHead = ( int8_t * ) pxNewQueue; - 800c40e: 69bb ldr r3, [r7, #24] - 800c410: 69ba ldr r2, [r7, #24] - 800c412: 601a str r2, [r3, #0] - 800c414: e002 b.n 800c41c - } - else - { - /* Set the head to the start of the queue storage area. */ - pxNewQueue->pcHead = ( int8_t * ) pucQueueStorage; - 800c416: 69bb ldr r3, [r7, #24] - 800c418: 687a ldr r2, [r7, #4] - 800c41a: 601a str r2, [r3, #0] - } - - /* Initialise the queue members as described where the queue type is - defined. */ - pxNewQueue->uxLength = uxQueueLength; - 800c41c: 69bb ldr r3, [r7, #24] - 800c41e: 68fa ldr r2, [r7, #12] - 800c420: 63da str r2, [r3, #60] ; 0x3c - pxNewQueue->uxItemSize = uxItemSize; - 800c422: 69bb ldr r3, [r7, #24] - 800c424: 68ba ldr r2, [r7, #8] - 800c426: 641a str r2, [r3, #64] ; 0x40 - ( void ) xQueueGenericReset( pxNewQueue, pdTRUE ); - 800c428: 69bb ldr r3, [r7, #24] - 800c42a: 2101 movs r1, #1 - 800c42c: 0018 movs r0, r3 - 800c42e: f7ff ff10 bl 800c252 - - #if ( configUSE_TRACE_FACILITY == 1 ) - { - pxNewQueue->ucQueueType = ucQueueType; - 800c432: 69bb ldr r3, [r7, #24] - 800c434: 1cfa adds r2, r7, #3 - 800c436: 214c movs r1, #76 ; 0x4c - 800c438: 7812 ldrb r2, [r2, #0] - 800c43a: 545a strb r2, [r3, r1] - pxNewQueue->pxQueueSetContainer = NULL; - } - #endif /* configUSE_QUEUE_SETS */ - - traceQUEUE_CREATE( pxNewQueue ); -} - 800c43c: 46c0 nop ; (mov r8, r8) - 800c43e: 46bd mov sp, r7 - 800c440: b004 add sp, #16 - 800c442: bd80 pop {r7, pc} - -0800c444 : -/*-----------------------------------------------------------*/ - -#if( configUSE_MUTEXES == 1 ) - - static void prvInitialiseMutex( Queue_t *pxNewQueue ) - { - 800c444: b580 push {r7, lr} - 800c446: b082 sub sp, #8 - 800c448: af00 add r7, sp, #0 - 800c44a: 6078 str r0, [r7, #4] - if( pxNewQueue != NULL ) - 800c44c: 687b ldr r3, [r7, #4] - 800c44e: 2b00 cmp r3, #0 - 800c450: d00e beq.n 800c470 - { - /* The queue create function will set all the queue structure members - correctly for a generic queue, but this function is creating a - mutex. Overwrite those members that need to be set differently - - in particular the information required for priority inheritance. */ - pxNewQueue->u.xSemaphore.xMutexHolder = NULL; - 800c452: 687b ldr r3, [r7, #4] - 800c454: 2200 movs r2, #0 - 800c456: 609a str r2, [r3, #8] - pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX; - 800c458: 687b ldr r3, [r7, #4] - 800c45a: 2200 movs r2, #0 - 800c45c: 601a str r2, [r3, #0] - - /* In case this is a recursive mutex. */ - pxNewQueue->u.xSemaphore.uxRecursiveCallCount = 0; - 800c45e: 687b ldr r3, [r7, #4] - 800c460: 2200 movs r2, #0 - 800c462: 60da str r2, [r3, #12] - - traceCREATE_MUTEX( pxNewQueue ); - - /* Start with the semaphore in the expected state. */ - ( void ) xQueueGenericSend( pxNewQueue, NULL, ( TickType_t ) 0U, queueSEND_TO_BACK ); - 800c464: 6878 ldr r0, [r7, #4] - 800c466: 2300 movs r3, #0 - 800c468: 2200 movs r2, #0 - 800c46a: 2100 movs r1, #0 - 800c46c: f000 f89b bl 800c5a6 - } - else - { - traceCREATE_MUTEX_FAILED(); - } - } - 800c470: 46c0 nop ; (mov r8, r8) - 800c472: 46bd mov sp, r7 - 800c474: b002 add sp, #8 - 800c476: bd80 pop {r7, pc} - -0800c478 : -/*-----------------------------------------------------------*/ - -#if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) - - QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) - { - 800c478: b580 push {r7, lr} - 800c47a: b086 sub sp, #24 - 800c47c: af00 add r7, sp, #0 - 800c47e: 0002 movs r2, r0 - 800c480: 1dfb adds r3, r7, #7 - 800c482: 701a strb r2, [r3, #0] - QueueHandle_t xNewQueue; - const UBaseType_t uxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0; - 800c484: 2301 movs r3, #1 - 800c486: 617b str r3, [r7, #20] - 800c488: 2300 movs r3, #0 - 800c48a: 613b str r3, [r7, #16] - - xNewQueue = xQueueGenericCreate( uxMutexLength, uxMutexSize, ucQueueType ); - 800c48c: 1dfb adds r3, r7, #7 - 800c48e: 781a ldrb r2, [r3, #0] - 800c490: 6939 ldr r1, [r7, #16] - 800c492: 697b ldr r3, [r7, #20] - 800c494: 0018 movs r0, r3 - 800c496: f7ff ff7c bl 800c392 - 800c49a: 0003 movs r3, r0 - 800c49c: 60fb str r3, [r7, #12] - prvInitialiseMutex( ( Queue_t * ) xNewQueue ); - 800c49e: 68fb ldr r3, [r7, #12] - 800c4a0: 0018 movs r0, r3 - 800c4a2: f7ff ffcf bl 800c444 - - return xNewQueue; - 800c4a6: 68fb ldr r3, [r7, #12] - } - 800c4a8: 0018 movs r0, r3 - 800c4aa: 46bd mov sp, r7 - 800c4ac: b006 add sp, #24 - 800c4ae: bd80 pop {r7, pc} - -0800c4b0 : -/*-----------------------------------------------------------*/ - -#if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) - - QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) - { - 800c4b0: b580 push {r7, lr} - 800c4b2: b088 sub sp, #32 - 800c4b4: af02 add r7, sp, #8 - 800c4b6: 0002 movs r2, r0 - 800c4b8: 6039 str r1, [r7, #0] - 800c4ba: 1dfb adds r3, r7, #7 - 800c4bc: 701a strb r2, [r3, #0] - QueueHandle_t xNewQueue; - const UBaseType_t uxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0; - 800c4be: 2301 movs r3, #1 - 800c4c0: 617b str r3, [r7, #20] - 800c4c2: 2300 movs r3, #0 - 800c4c4: 613b str r3, [r7, #16] - - /* Prevent compiler warnings about unused parameters if - configUSE_TRACE_FACILITY does not equal 1. */ - ( void ) ucQueueType; - - xNewQueue = xQueueGenericCreateStatic( uxMutexLength, uxMutexSize, NULL, pxStaticQueue, ucQueueType ); - 800c4c6: 683a ldr r2, [r7, #0] - 800c4c8: 6939 ldr r1, [r7, #16] - 800c4ca: 6978 ldr r0, [r7, #20] - 800c4cc: 1dfb adds r3, r7, #7 - 800c4ce: 781b ldrb r3, [r3, #0] - 800c4d0: 9300 str r3, [sp, #0] - 800c4d2: 0013 movs r3, r2 - 800c4d4: 2200 movs r2, #0 - 800c4d6: f7ff ff10 bl 800c2fa - 800c4da: 0003 movs r3, r0 - 800c4dc: 60fb str r3, [r7, #12] - prvInitialiseMutex( ( Queue_t * ) xNewQueue ); - 800c4de: 68fb ldr r3, [r7, #12] - 800c4e0: 0018 movs r0, r3 - 800c4e2: f7ff ffaf bl 800c444 - - return xNewQueue; - 800c4e6: 68fb ldr r3, [r7, #12] - } - 800c4e8: 0018 movs r0, r3 - 800c4ea: 46bd mov sp, r7 - 800c4ec: b006 add sp, #24 - 800c4ee: bd80 pop {r7, pc} - -0800c4f0 : -/*-----------------------------------------------------------*/ - -#if ( configUSE_RECURSIVE_MUTEXES == 1 ) - - BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) - { - 800c4f0: b590 push {r4, r7, lr} - 800c4f2: b085 sub sp, #20 - 800c4f4: af00 add r7, sp, #0 - 800c4f6: 6078 str r0, [r7, #4] - BaseType_t xReturn; - Queue_t * const pxMutex = ( Queue_t * ) xMutex; - 800c4f8: 687b ldr r3, [r7, #4] - 800c4fa: 60bb str r3, [r7, #8] - - configASSERT( pxMutex ); - 800c4fc: 68bb ldr r3, [r7, #8] - 800c4fe: 2b00 cmp r3, #0 - 800c500: d101 bne.n 800c506 - 800c502: b672 cpsid i - 800c504: e7fe b.n 800c504 - change outside of this task. If this task does not hold the mutex then - pxMutexHolder can never coincidentally equal the tasks handle, and as - this is the only condition we are interested in it does not matter if - pxMutexHolder is accessed simultaneously by another task. Therefore no - mutual exclusion is required to test the pxMutexHolder variable. */ - if( pxMutex->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() ) - 800c506: 68bb ldr r3, [r7, #8] - 800c508: 689c ldr r4, [r3, #8] - 800c50a: f001 fad5 bl 800dab8 - 800c50e: 0003 movs r3, r0 - 800c510: 429c cmp r4, r3 - 800c512: d111 bne.n 800c538 - /* uxRecursiveCallCount cannot be zero if xMutexHolder is equal to - the task handle, therefore no underflow check is required. Also, - uxRecursiveCallCount is only modified by the mutex holder, and as - there can only be one, no mutual exclusion is required to modify the - uxRecursiveCallCount member. */ - ( pxMutex->u.xSemaphore.uxRecursiveCallCount )--; - 800c514: 68bb ldr r3, [r7, #8] - 800c516: 68db ldr r3, [r3, #12] - 800c518: 1e5a subs r2, r3, #1 - 800c51a: 68bb ldr r3, [r7, #8] - 800c51c: 60da str r2, [r3, #12] - - /* Has the recursive call count unwound to 0? */ - if( pxMutex->u.xSemaphore.uxRecursiveCallCount == ( UBaseType_t ) 0 ) - 800c51e: 68bb ldr r3, [r7, #8] - 800c520: 68db ldr r3, [r3, #12] - 800c522: 2b00 cmp r3, #0 - 800c524: d105 bne.n 800c532 - { - /* Return the mutex. This will automatically unblock any other - task that might be waiting to access the mutex. */ - ( void ) xQueueGenericSend( pxMutex, NULL, queueMUTEX_GIVE_BLOCK_TIME, queueSEND_TO_BACK ); - 800c526: 68b8 ldr r0, [r7, #8] - 800c528: 2300 movs r3, #0 - 800c52a: 2200 movs r2, #0 - 800c52c: 2100 movs r1, #0 - 800c52e: f000 f83a bl 800c5a6 - else - { - mtCOVERAGE_TEST_MARKER(); - } - - xReturn = pdPASS; - 800c532: 2301 movs r3, #1 - 800c534: 60fb str r3, [r7, #12] - 800c536: e001 b.n 800c53c - } - else - { - /* The mutex cannot be given because the calling task is not the - holder. */ - xReturn = pdFAIL; - 800c538: 2300 movs r3, #0 - 800c53a: 60fb str r3, [r7, #12] - - traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex ); - } - - return xReturn; - 800c53c: 68fb ldr r3, [r7, #12] - } - 800c53e: 0018 movs r0, r3 - 800c540: 46bd mov sp, r7 - 800c542: b005 add sp, #20 - 800c544: bd90 pop {r4, r7, pc} - -0800c546 : -/*-----------------------------------------------------------*/ - -#if ( configUSE_RECURSIVE_MUTEXES == 1 ) - - BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) - { - 800c546: b590 push {r4, r7, lr} - 800c548: b085 sub sp, #20 - 800c54a: af00 add r7, sp, #0 - 800c54c: 6078 str r0, [r7, #4] - 800c54e: 6039 str r1, [r7, #0] - BaseType_t xReturn; - Queue_t * const pxMutex = ( Queue_t * ) xMutex; - 800c550: 687b ldr r3, [r7, #4] - 800c552: 60bb str r3, [r7, #8] - - configASSERT( pxMutex ); - 800c554: 68bb ldr r3, [r7, #8] - 800c556: 2b00 cmp r3, #0 - 800c558: d101 bne.n 800c55e - 800c55a: b672 cpsid i - 800c55c: e7fe b.n 800c55c - /* Comments regarding mutual exclusion as per those within - xQueueGiveMutexRecursive(). */ - - traceTAKE_MUTEX_RECURSIVE( pxMutex ); - - if( pxMutex->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() ) - 800c55e: 68bb ldr r3, [r7, #8] - 800c560: 689c ldr r4, [r3, #8] - 800c562: f001 faa9 bl 800dab8 - 800c566: 0003 movs r3, r0 - 800c568: 429c cmp r4, r3 - 800c56a: d107 bne.n 800c57c - { - ( pxMutex->u.xSemaphore.uxRecursiveCallCount )++; - 800c56c: 68bb ldr r3, [r7, #8] - 800c56e: 68db ldr r3, [r3, #12] - 800c570: 1c5a adds r2, r3, #1 - 800c572: 68bb ldr r3, [r7, #8] - 800c574: 60da str r2, [r3, #12] - xReturn = pdPASS; - 800c576: 2301 movs r3, #1 - 800c578: 60fb str r3, [r7, #12] - 800c57a: e00f b.n 800c59c - } - else - { - xReturn = xQueueSemaphoreTake( pxMutex, xTicksToWait ); - 800c57c: 683a ldr r2, [r7, #0] - 800c57e: 68bb ldr r3, [r7, #8] - 800c580: 0011 movs r1, r2 - 800c582: 0018 movs r0, r3 - 800c584: f000 f9fc bl 800c980 - 800c588: 0003 movs r3, r0 - 800c58a: 60fb str r3, [r7, #12] - - /* pdPASS will only be returned if the mutex was successfully - obtained. The calling task may have entered the Blocked state - before reaching here. */ - if( xReturn != pdFAIL ) - 800c58c: 68fb ldr r3, [r7, #12] - 800c58e: 2b00 cmp r3, #0 - 800c590: d004 beq.n 800c59c - { - ( pxMutex->u.xSemaphore.uxRecursiveCallCount )++; - 800c592: 68bb ldr r3, [r7, #8] - 800c594: 68db ldr r3, [r3, #12] - 800c596: 1c5a adds r2, r3, #1 - 800c598: 68bb ldr r3, [r7, #8] - 800c59a: 60da str r2, [r3, #12] - { - traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex ); - } - } - - return xReturn; - 800c59c: 68fb ldr r3, [r7, #12] - } - 800c59e: 0018 movs r0, r3 - 800c5a0: 46bd mov sp, r7 - 800c5a2: b005 add sp, #20 - 800c5a4: bd90 pop {r4, r7, pc} - -0800c5a6 : - -#endif /* ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ -/*-----------------------------------------------------------*/ - -BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) -{ - 800c5a6: b580 push {r7, lr} - 800c5a8: b08a sub sp, #40 ; 0x28 - 800c5aa: af00 add r7, sp, #0 - 800c5ac: 60f8 str r0, [r7, #12] - 800c5ae: 60b9 str r1, [r7, #8] - 800c5b0: 607a str r2, [r7, #4] - 800c5b2: 603b str r3, [r7, #0] -BaseType_t xEntryTimeSet = pdFALSE, xYieldRequired; - 800c5b4: 2300 movs r3, #0 - 800c5b6: 627b str r3, [r7, #36] ; 0x24 -TimeOut_t xTimeOut; -Queue_t * const pxQueue = xQueue; - 800c5b8: 68fb ldr r3, [r7, #12] - 800c5ba: 623b str r3, [r7, #32] - - configASSERT( pxQueue ); - 800c5bc: 6a3b ldr r3, [r7, #32] - 800c5be: 2b00 cmp r3, #0 - 800c5c0: d101 bne.n 800c5c6 - 800c5c2: b672 cpsid i - 800c5c4: e7fe b.n 800c5c4 - configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); - 800c5c6: 68bb ldr r3, [r7, #8] - 800c5c8: 2b00 cmp r3, #0 - 800c5ca: d103 bne.n 800c5d4 - 800c5cc: 6a3b ldr r3, [r7, #32] - 800c5ce: 6c1b ldr r3, [r3, #64] ; 0x40 - 800c5d0: 2b00 cmp r3, #0 - 800c5d2: d101 bne.n 800c5d8 - 800c5d4: 2301 movs r3, #1 - 800c5d6: e000 b.n 800c5da - 800c5d8: 2300 movs r3, #0 - 800c5da: 2b00 cmp r3, #0 - 800c5dc: d101 bne.n 800c5e2 - 800c5de: b672 cpsid i - 800c5e0: e7fe b.n 800c5e0 - configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); - 800c5e2: 683b ldr r3, [r7, #0] - 800c5e4: 2b02 cmp r3, #2 - 800c5e6: d103 bne.n 800c5f0 - 800c5e8: 6a3b ldr r3, [r7, #32] - 800c5ea: 6bdb ldr r3, [r3, #60] ; 0x3c - 800c5ec: 2b01 cmp r3, #1 - 800c5ee: d101 bne.n 800c5f4 - 800c5f0: 2301 movs r3, #1 - 800c5f2: e000 b.n 800c5f6 - 800c5f4: 2300 movs r3, #0 - 800c5f6: 2b00 cmp r3, #0 - 800c5f8: d101 bne.n 800c5fe - 800c5fa: b672 cpsid i - 800c5fc: e7fe b.n 800c5fc - #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) - { - configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); - 800c5fe: f001 fa69 bl 800dad4 - 800c602: 1e03 subs r3, r0, #0 - 800c604: d102 bne.n 800c60c - 800c606: 687b ldr r3, [r7, #4] - 800c608: 2b00 cmp r3, #0 - 800c60a: d101 bne.n 800c610 - 800c60c: 2301 movs r3, #1 - 800c60e: e000 b.n 800c612 - 800c610: 2300 movs r3, #0 - 800c612: 2b00 cmp r3, #0 - 800c614: d101 bne.n 800c61a - 800c616: b672 cpsid i - 800c618: e7fe b.n 800c618 - /*lint -save -e904 This function relaxes the coding standard somewhat to - allow return statements within the function itself. This is done in the - interest of execution time efficiency. */ - for( ;; ) - { - taskENTER_CRITICAL(); - 800c61a: f002 f879 bl 800e710 - { - /* Is there room on the queue now? The running task must be the - highest priority task wanting to access the queue. If the head item - in the queue is to be overwritten then it does not matter if the - queue is full. */ - if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) - 800c61e: 6a3b ldr r3, [r7, #32] - 800c620: 6b9a ldr r2, [r3, #56] ; 0x38 - 800c622: 6a3b ldr r3, [r7, #32] - 800c624: 6bdb ldr r3, [r3, #60] ; 0x3c - 800c626: 429a cmp r2, r3 - 800c628: d302 bcc.n 800c630 - 800c62a: 683b ldr r3, [r7, #0] - 800c62c: 2b02 cmp r3, #2 - 800c62e: d11e bne.n 800c66e - } - } - } - #else /* configUSE_QUEUE_SETS */ - { - xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); - 800c630: 683a ldr r2, [r7, #0] - 800c632: 68b9 ldr r1, [r7, #8] - 800c634: 6a3b ldr r3, [r7, #32] - 800c636: 0018 movs r0, r3 - 800c638: f000 fb1d bl 800cc76 - 800c63c: 0003 movs r3, r0 - 800c63e: 61fb str r3, [r7, #28] - - /* If there was a task waiting for data to arrive on the - queue then unblock it now. */ - if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) - 800c640: 6a3b ldr r3, [r7, #32] - 800c642: 6a5b ldr r3, [r3, #36] ; 0x24 - 800c644: 2b00 cmp r3, #0 - 800c646: d009 beq.n 800c65c - { - if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) - 800c648: 6a3b ldr r3, [r7, #32] - 800c64a: 3324 adds r3, #36 ; 0x24 - 800c64c: 0018 movs r0, r3 - 800c64e: f001 f89b bl 800d788 - 800c652: 1e03 subs r3, r0, #0 - 800c654: d007 beq.n 800c666 - { - /* The unblocked task has a priority higher than - our own so yield immediately. Yes it is ok to do - this from within the critical section - the kernel - takes care of that. */ - queueYIELD_IF_USING_PREEMPTION(); - 800c656: f002 f84b bl 800e6f0 - 800c65a: e004 b.n 800c666 - else - { - mtCOVERAGE_TEST_MARKER(); - } - } - else if( xYieldRequired != pdFALSE ) - 800c65c: 69fb ldr r3, [r7, #28] - 800c65e: 2b00 cmp r3, #0 - 800c660: d001 beq.n 800c666 - { - /* This path is a special case that will only get - executed if the task was holding multiple mutexes and - the mutexes were given back in an order that is - different to that in which they were taken. */ - queueYIELD_IF_USING_PREEMPTION(); - 800c662: f002 f845 bl 800e6f0 - mtCOVERAGE_TEST_MARKER(); - } - } - #endif /* configUSE_QUEUE_SETS */ - - taskEXIT_CRITICAL(); - 800c666: f002 f865 bl 800e734 - return pdPASS; - 800c66a: 2301 movs r3, #1 - 800c66c: e05b b.n 800c726 - } - else - { - if( xTicksToWait == ( TickType_t ) 0 ) - 800c66e: 687b ldr r3, [r7, #4] - 800c670: 2b00 cmp r3, #0 - 800c672: d103 bne.n 800c67c - { - /* The queue was full and no block time is specified (or - the block time has expired) so leave now. */ - taskEXIT_CRITICAL(); - 800c674: f002 f85e bl 800e734 - - /* Return to the original privilege level before exiting - the function. */ - traceQUEUE_SEND_FAILED( pxQueue ); - return errQUEUE_FULL; - 800c678: 2300 movs r3, #0 - 800c67a: e054 b.n 800c726 - } - else if( xEntryTimeSet == pdFALSE ) - 800c67c: 6a7b ldr r3, [r7, #36] ; 0x24 - 800c67e: 2b00 cmp r3, #0 - 800c680: d106 bne.n 800c690 - { - /* The queue was full and a block time was specified so - configure the timeout structure. */ - vTaskInternalSetTimeOutState( &xTimeOut ); - 800c682: 2314 movs r3, #20 - 800c684: 18fb adds r3, r7, r3 - 800c686: 0018 movs r0, r3 - 800c688: f001 f8da bl 800d840 - xEntryTimeSet = pdTRUE; - 800c68c: 2301 movs r3, #1 - 800c68e: 627b str r3, [r7, #36] ; 0x24 - /* Entry time was already set. */ - mtCOVERAGE_TEST_MARKER(); - } - } - } - taskEXIT_CRITICAL(); - 800c690: f002 f850 bl 800e734 - - /* Interrupts and other tasks can send to and receive from the queue - now the critical section has been exited. */ - - vTaskSuspendAll(); - 800c694: f000 fe84 bl 800d3a0 - prvLockQueue( pxQueue ); - 800c698: f002 f83a bl 800e710 - 800c69c: 6a3b ldr r3, [r7, #32] - 800c69e: 2244 movs r2, #68 ; 0x44 - 800c6a0: 5c9b ldrb r3, [r3, r2] - 800c6a2: b25b sxtb r3, r3 - 800c6a4: 3301 adds r3, #1 - 800c6a6: d103 bne.n 800c6b0 - 800c6a8: 6a3b ldr r3, [r7, #32] - 800c6aa: 2244 movs r2, #68 ; 0x44 - 800c6ac: 2100 movs r1, #0 - 800c6ae: 5499 strb r1, [r3, r2] - 800c6b0: 6a3b ldr r3, [r7, #32] - 800c6b2: 2245 movs r2, #69 ; 0x45 - 800c6b4: 5c9b ldrb r3, [r3, r2] - 800c6b6: b25b sxtb r3, r3 - 800c6b8: 3301 adds r3, #1 - 800c6ba: d103 bne.n 800c6c4 - 800c6bc: 6a3b ldr r3, [r7, #32] - 800c6be: 2245 movs r2, #69 ; 0x45 - 800c6c0: 2100 movs r1, #0 - 800c6c2: 5499 strb r1, [r3, r2] - 800c6c4: f002 f836 bl 800e734 - - /* Update the timeout state to see if it has expired yet. */ - if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) - 800c6c8: 1d3a adds r2, r7, #4 - 800c6ca: 2314 movs r3, #20 - 800c6cc: 18fb adds r3, r7, r3 - 800c6ce: 0011 movs r1, r2 - 800c6d0: 0018 movs r0, r3 - 800c6d2: f001 f8c9 bl 800d868 - 800c6d6: 1e03 subs r3, r0, #0 - 800c6d8: d11e bne.n 800c718 - { - if( prvIsQueueFull( pxQueue ) != pdFALSE ) - 800c6da: 6a3b ldr r3, [r7, #32] - 800c6dc: 0018 movs r0, r3 - 800c6de: f000 fbcf bl 800ce80 - 800c6e2: 1e03 subs r3, r0, #0 - 800c6e4: d011 beq.n 800c70a - { - traceBLOCKING_ON_QUEUE_SEND( pxQueue ); - vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait ); - 800c6e6: 6a3b ldr r3, [r7, #32] - 800c6e8: 3310 adds r3, #16 - 800c6ea: 687a ldr r2, [r7, #4] - 800c6ec: 0011 movs r1, r2 - 800c6ee: 0018 movs r0, r3 - 800c6f0: f001 f806 bl 800d700 - /* Unlocking the queue means queue events can effect the - event list. It is possible that interrupts occurring now - remove this task from the event list again - but as the - scheduler is suspended the task will go onto the pending - ready last instead of the actual ready list. */ - prvUnlockQueue( pxQueue ); - 800c6f4: 6a3b ldr r3, [r7, #32] - 800c6f6: 0018 movs r0, r3 - 800c6f8: f000 fb4e bl 800cd98 - /* Resuming the scheduler will move tasks from the pending - ready list into the ready list - so it is feasible that this - task is already in a ready list before it yields - in which - case the yield will not cause a context switch unless there - is also a higher priority task in the pending ready list. */ - if( xTaskResumeAll() == pdFALSE ) - 800c6fc: f000 fe5c bl 800d3b8 - 800c700: 1e03 subs r3, r0, #0 - 800c702: d18a bne.n 800c61a - { - portYIELD_WITHIN_API(); - 800c704: f001 fff4 bl 800e6f0 - 800c708: e787 b.n 800c61a - } - } - else - { - /* Try again. */ - prvUnlockQueue( pxQueue ); - 800c70a: 6a3b ldr r3, [r7, #32] - 800c70c: 0018 movs r0, r3 - 800c70e: f000 fb43 bl 800cd98 - ( void ) xTaskResumeAll(); - 800c712: f000 fe51 bl 800d3b8 - 800c716: e780 b.n 800c61a - } - } - else - { - /* The timeout has expired. */ - prvUnlockQueue( pxQueue ); - 800c718: 6a3b ldr r3, [r7, #32] - 800c71a: 0018 movs r0, r3 - 800c71c: f000 fb3c bl 800cd98 - ( void ) xTaskResumeAll(); - 800c720: f000 fe4a bl 800d3b8 - - traceQUEUE_SEND_FAILED( pxQueue ); - return errQUEUE_FULL; - 800c724: 2300 movs r3, #0 - } - } /*lint -restore */ -} - 800c726: 0018 movs r0, r3 - 800c728: 46bd mov sp, r7 - 800c72a: b00a add sp, #40 ; 0x28 - 800c72c: bd80 pop {r7, pc} - -0800c72e : -/*-----------------------------------------------------------*/ - -BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) -{ - 800c72e: b590 push {r4, r7, lr} - 800c730: b08b sub sp, #44 ; 0x2c - 800c732: af00 add r7, sp, #0 - 800c734: 60f8 str r0, [r7, #12] - 800c736: 60b9 str r1, [r7, #8] - 800c738: 607a str r2, [r7, #4] - 800c73a: 603b str r3, [r7, #0] -BaseType_t xReturn; -UBaseType_t uxSavedInterruptStatus; -Queue_t * const pxQueue = xQueue; - 800c73c: 68fb ldr r3, [r7, #12] - 800c73e: 623b str r3, [r7, #32] - - configASSERT( pxQueue ); - 800c740: 6a3b ldr r3, [r7, #32] - 800c742: 2b00 cmp r3, #0 - 800c744: d101 bne.n 800c74a - 800c746: b672 cpsid i - 800c748: e7fe b.n 800c748 - configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); - 800c74a: 68bb ldr r3, [r7, #8] - 800c74c: 2b00 cmp r3, #0 - 800c74e: d103 bne.n 800c758 - 800c750: 6a3b ldr r3, [r7, #32] - 800c752: 6c1b ldr r3, [r3, #64] ; 0x40 - 800c754: 2b00 cmp r3, #0 - 800c756: d101 bne.n 800c75c - 800c758: 2301 movs r3, #1 - 800c75a: e000 b.n 800c75e - 800c75c: 2300 movs r3, #0 - 800c75e: 2b00 cmp r3, #0 - 800c760: d101 bne.n 800c766 - 800c762: b672 cpsid i - 800c764: e7fe b.n 800c764 - configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); - 800c766: 683b ldr r3, [r7, #0] - 800c768: 2b02 cmp r3, #2 - 800c76a: d103 bne.n 800c774 - 800c76c: 6a3b ldr r3, [r7, #32] - 800c76e: 6bdb ldr r3, [r3, #60] ; 0x3c - 800c770: 2b01 cmp r3, #1 - 800c772: d101 bne.n 800c778 - 800c774: 2301 movs r3, #1 - 800c776: e000 b.n 800c77a - 800c778: 2300 movs r3, #0 - 800c77a: 2b00 cmp r3, #0 - 800c77c: d101 bne.n 800c782 - 800c77e: b672 cpsid i - 800c780: e7fe b.n 800c780 - /* Similar to xQueueGenericSend, except without blocking if there is no room - in the queue. Also don't directly wake a task that was blocked on a queue - read, instead return a flag to say whether a context switch is required or - not (i.e. has a task with a higher priority than us been woken by this - post). */ - uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); - 800c782: f001 ffef bl 800e764 - 800c786: 0003 movs r3, r0 - 800c788: 61fb str r3, [r7, #28] - { - if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) - 800c78a: 6a3b ldr r3, [r7, #32] - 800c78c: 6b9a ldr r2, [r3, #56] ; 0x38 - 800c78e: 6a3b ldr r3, [r7, #32] - 800c790: 6bdb ldr r3, [r3, #60] ; 0x3c - 800c792: 429a cmp r2, r3 - 800c794: d302 bcc.n 800c79c - 800c796: 683b ldr r3, [r7, #0] - 800c798: 2b02 cmp r3, #2 - 800c79a: d131 bne.n 800c800 - { - const int8_t cTxLock = pxQueue->cTxLock; - 800c79c: 241b movs r4, #27 - 800c79e: 193b adds r3, r7, r4 - 800c7a0: 6a3a ldr r2, [r7, #32] - 800c7a2: 2145 movs r1, #69 ; 0x45 - 800c7a4: 5c52 ldrb r2, [r2, r1] - 800c7a6: 701a strb r2, [r3, #0] - const UBaseType_t uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting; - 800c7a8: 6a3b ldr r3, [r7, #32] - 800c7aa: 6b9b ldr r3, [r3, #56] ; 0x38 - 800c7ac: 617b str r3, [r7, #20] - /* Semaphores use xQueueGiveFromISR(), so pxQueue will not be a - semaphore or mutex. That means prvCopyDataToQueue() cannot result - in a task disinheriting a priority and prvCopyDataToQueue() can be - called here even though the disinherit function does not check if - the scheduler is suspended before accessing the ready lists. */ - ( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); - 800c7ae: 683a ldr r2, [r7, #0] - 800c7b0: 68b9 ldr r1, [r7, #8] - 800c7b2: 6a3b ldr r3, [r7, #32] - 800c7b4: 0018 movs r0, r3 - 800c7b6: f000 fa5e bl 800cc76 - - /* The event list is not altered if the queue is locked. This will - be done when the queue is unlocked later. */ - if( cTxLock == queueUNLOCKED ) - 800c7ba: 193b adds r3, r7, r4 - 800c7bc: 781b ldrb r3, [r3, #0] - 800c7be: b25b sxtb r3, r3 - 800c7c0: 3301 adds r3, #1 - 800c7c2: d111 bne.n 800c7e8 - } - } - } - #else /* configUSE_QUEUE_SETS */ - { - if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) - 800c7c4: 6a3b ldr r3, [r7, #32] - 800c7c6: 6a5b ldr r3, [r3, #36] ; 0x24 - 800c7c8: 2b00 cmp r3, #0 - 800c7ca: d016 beq.n 800c7fa - { - if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) - 800c7cc: 6a3b ldr r3, [r7, #32] - 800c7ce: 3324 adds r3, #36 ; 0x24 - 800c7d0: 0018 movs r0, r3 - 800c7d2: f000 ffd9 bl 800d788 - 800c7d6: 1e03 subs r3, r0, #0 - 800c7d8: d00f beq.n 800c7fa - { - /* The task waiting has a higher priority so record that a - context switch is required. */ - if( pxHigherPriorityTaskWoken != NULL ) - 800c7da: 687b ldr r3, [r7, #4] - 800c7dc: 2b00 cmp r3, #0 - 800c7de: d00c beq.n 800c7fa - { - *pxHigherPriorityTaskWoken = pdTRUE; - 800c7e0: 687b ldr r3, [r7, #4] - 800c7e2: 2201 movs r2, #1 - 800c7e4: 601a str r2, [r3, #0] - 800c7e6: e008 b.n 800c7fa - } - else - { - /* Increment the lock count so the task that unlocks the queue - knows that data was posted while it was locked. */ - pxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 ); - 800c7e8: 231b movs r3, #27 - 800c7ea: 18fb adds r3, r7, r3 - 800c7ec: 781b ldrb r3, [r3, #0] - 800c7ee: 3301 adds r3, #1 - 800c7f0: b2db uxtb r3, r3 - 800c7f2: b259 sxtb r1, r3 - 800c7f4: 6a3b ldr r3, [r7, #32] - 800c7f6: 2245 movs r2, #69 ; 0x45 - 800c7f8: 5499 strb r1, [r3, r2] - } - - xReturn = pdPASS; - 800c7fa: 2301 movs r3, #1 - 800c7fc: 627b str r3, [r7, #36] ; 0x24 - { - 800c7fe: e001 b.n 800c804 - } - else - { - traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ); - xReturn = errQUEUE_FULL; - 800c800: 2300 movs r3, #0 - 800c802: 627b str r3, [r7, #36] ; 0x24 - } - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); - 800c804: 69fb ldr r3, [r7, #28] - 800c806: 0018 movs r0, r3 - 800c808: f001 ffb2 bl 800e770 - - return xReturn; - 800c80c: 6a7b ldr r3, [r7, #36] ; 0x24 -} - 800c80e: 0018 movs r0, r3 - 800c810: 46bd mov sp, r7 - 800c812: b00b add sp, #44 ; 0x2c - 800c814: bd90 pop {r4, r7, pc} - -0800c816 : - return xReturn; -} -/*-----------------------------------------------------------*/ - -BaseType_t xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) -{ - 800c816: b580 push {r7, lr} - 800c818: b08a sub sp, #40 ; 0x28 - 800c81a: af00 add r7, sp, #0 - 800c81c: 60f8 str r0, [r7, #12] - 800c81e: 60b9 str r1, [r7, #8] - 800c820: 607a str r2, [r7, #4] -BaseType_t xEntryTimeSet = pdFALSE; - 800c822: 2300 movs r3, #0 - 800c824: 627b str r3, [r7, #36] ; 0x24 -TimeOut_t xTimeOut; -Queue_t * const pxQueue = xQueue; - 800c826: 68fb ldr r3, [r7, #12] - 800c828: 623b str r3, [r7, #32] - - /* Check the pointer is not NULL. */ - configASSERT( ( pxQueue ) ); - 800c82a: 6a3b ldr r3, [r7, #32] - 800c82c: 2b00 cmp r3, #0 - 800c82e: d101 bne.n 800c834 - 800c830: b672 cpsid i - 800c832: e7fe b.n 800c832 - - /* The buffer into which data is received can only be NULL if the data size - is zero (so no data is copied into the buffer. */ - configASSERT( !( ( ( pvBuffer ) == NULL ) && ( ( pxQueue )->uxItemSize != ( UBaseType_t ) 0U ) ) ); - 800c834: 68bb ldr r3, [r7, #8] - 800c836: 2b00 cmp r3, #0 - 800c838: d103 bne.n 800c842 - 800c83a: 6a3b ldr r3, [r7, #32] - 800c83c: 6c1b ldr r3, [r3, #64] ; 0x40 - 800c83e: 2b00 cmp r3, #0 - 800c840: d101 bne.n 800c846 - 800c842: 2301 movs r3, #1 - 800c844: e000 b.n 800c848 - 800c846: 2300 movs r3, #0 - 800c848: 2b00 cmp r3, #0 - 800c84a: d101 bne.n 800c850 - 800c84c: b672 cpsid i - 800c84e: e7fe b.n 800c84e - - /* Cannot block if the scheduler is suspended. */ - #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) - { - configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); - 800c850: f001 f940 bl 800dad4 - 800c854: 1e03 subs r3, r0, #0 - 800c856: d102 bne.n 800c85e - 800c858: 687b ldr r3, [r7, #4] - 800c85a: 2b00 cmp r3, #0 - 800c85c: d101 bne.n 800c862 - 800c85e: 2301 movs r3, #1 - 800c860: e000 b.n 800c864 - 800c862: 2300 movs r3, #0 - 800c864: 2b00 cmp r3, #0 - 800c866: d101 bne.n 800c86c - 800c868: b672 cpsid i - 800c86a: e7fe b.n 800c86a - /*lint -save -e904 This function relaxes the coding standard somewhat to - allow return statements within the function itself. This is done in the - interest of execution time efficiency. */ - for( ;; ) - { - taskENTER_CRITICAL(); - 800c86c: f001 ff50 bl 800e710 - { - const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; - 800c870: 6a3b ldr r3, [r7, #32] - 800c872: 6b9b ldr r3, [r3, #56] ; 0x38 - 800c874: 61fb str r3, [r7, #28] - - /* Is there data in the queue now? To be running the calling task - must be the highest priority task wanting to access the queue. */ - if( uxMessagesWaiting > ( UBaseType_t ) 0 ) - 800c876: 69fb ldr r3, [r7, #28] - 800c878: 2b00 cmp r3, #0 - 800c87a: d01a beq.n 800c8b2 - { - /* Data available, remove one item. */ - prvCopyDataFromQueue( pxQueue, pvBuffer ); - 800c87c: 68ba ldr r2, [r7, #8] - 800c87e: 6a3b ldr r3, [r7, #32] - 800c880: 0011 movs r1, r2 - 800c882: 0018 movs r0, r3 - 800c884: f000 fa62 bl 800cd4c - traceQUEUE_RECEIVE( pxQueue ); - pxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1; - 800c888: 69fb ldr r3, [r7, #28] - 800c88a: 1e5a subs r2, r3, #1 - 800c88c: 6a3b ldr r3, [r7, #32] - 800c88e: 639a str r2, [r3, #56] ; 0x38 - - /* There is now space in the queue, were any tasks waiting to - post to the queue? If so, unblock the highest priority waiting - task. */ - if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) - 800c890: 6a3b ldr r3, [r7, #32] - 800c892: 691b ldr r3, [r3, #16] - 800c894: 2b00 cmp r3, #0 - 800c896: d008 beq.n 800c8aa - { - if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) - 800c898: 6a3b ldr r3, [r7, #32] - 800c89a: 3310 adds r3, #16 - 800c89c: 0018 movs r0, r3 - 800c89e: f000 ff73 bl 800d788 - 800c8a2: 1e03 subs r3, r0, #0 - 800c8a4: d001 beq.n 800c8aa - { - queueYIELD_IF_USING_PREEMPTION(); - 800c8a6: f001 ff23 bl 800e6f0 - else - { - mtCOVERAGE_TEST_MARKER(); - } - - taskEXIT_CRITICAL(); - 800c8aa: f001 ff43 bl 800e734 - return pdPASS; - 800c8ae: 2301 movs r3, #1 - 800c8b0: e062 b.n 800c978 - } - else - { - if( xTicksToWait == ( TickType_t ) 0 ) - 800c8b2: 687b ldr r3, [r7, #4] - 800c8b4: 2b00 cmp r3, #0 - 800c8b6: d103 bne.n 800c8c0 - { - /* The queue was empty and no block time is specified (or - the block time has expired) so leave now. */ - taskEXIT_CRITICAL(); - 800c8b8: f001 ff3c bl 800e734 - traceQUEUE_RECEIVE_FAILED( pxQueue ); - return errQUEUE_EMPTY; - 800c8bc: 2300 movs r3, #0 - 800c8be: e05b b.n 800c978 - } - else if( xEntryTimeSet == pdFALSE ) - 800c8c0: 6a7b ldr r3, [r7, #36] ; 0x24 - 800c8c2: 2b00 cmp r3, #0 - 800c8c4: d106 bne.n 800c8d4 - { - /* The queue was empty and a block time was specified so - configure the timeout structure. */ - vTaskInternalSetTimeOutState( &xTimeOut ); - 800c8c6: 2314 movs r3, #20 - 800c8c8: 18fb adds r3, r7, r3 - 800c8ca: 0018 movs r0, r3 - 800c8cc: f000 ffb8 bl 800d840 - xEntryTimeSet = pdTRUE; - 800c8d0: 2301 movs r3, #1 - 800c8d2: 627b str r3, [r7, #36] ; 0x24 - /* Entry time was already set. */ - mtCOVERAGE_TEST_MARKER(); - } - } - } - taskEXIT_CRITICAL(); - 800c8d4: f001 ff2e bl 800e734 - - /* Interrupts and other tasks can send to and receive from the queue - now the critical section has been exited. */ - - vTaskSuspendAll(); - 800c8d8: f000 fd62 bl 800d3a0 - prvLockQueue( pxQueue ); - 800c8dc: f001 ff18 bl 800e710 - 800c8e0: 6a3b ldr r3, [r7, #32] - 800c8e2: 2244 movs r2, #68 ; 0x44 - 800c8e4: 5c9b ldrb r3, [r3, r2] - 800c8e6: b25b sxtb r3, r3 - 800c8e8: 3301 adds r3, #1 - 800c8ea: d103 bne.n 800c8f4 - 800c8ec: 6a3b ldr r3, [r7, #32] - 800c8ee: 2244 movs r2, #68 ; 0x44 - 800c8f0: 2100 movs r1, #0 - 800c8f2: 5499 strb r1, [r3, r2] - 800c8f4: 6a3b ldr r3, [r7, #32] - 800c8f6: 2245 movs r2, #69 ; 0x45 - 800c8f8: 5c9b ldrb r3, [r3, r2] - 800c8fa: b25b sxtb r3, r3 - 800c8fc: 3301 adds r3, #1 - 800c8fe: d103 bne.n 800c908 - 800c900: 6a3b ldr r3, [r7, #32] - 800c902: 2245 movs r2, #69 ; 0x45 - 800c904: 2100 movs r1, #0 - 800c906: 5499 strb r1, [r3, r2] - 800c908: f001 ff14 bl 800e734 - - /* Update the timeout state to see if it has expired yet. */ - if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) - 800c90c: 1d3a adds r2, r7, #4 - 800c90e: 2314 movs r3, #20 - 800c910: 18fb adds r3, r7, r3 - 800c912: 0011 movs r1, r2 - 800c914: 0018 movs r0, r3 - 800c916: f000 ffa7 bl 800d868 - 800c91a: 1e03 subs r3, r0, #0 - 800c91c: d11e bne.n 800c95c - { - /* The timeout has not expired. If the queue is still empty place - the task on the list of tasks waiting to receive from the queue. */ - if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) - 800c91e: 6a3b ldr r3, [r7, #32] - 800c920: 0018 movs r0, r3 - 800c922: f000 fa97 bl 800ce54 - 800c926: 1e03 subs r3, r0, #0 - 800c928: d011 beq.n 800c94e - { - traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ); - vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); - 800c92a: 6a3b ldr r3, [r7, #32] - 800c92c: 3324 adds r3, #36 ; 0x24 - 800c92e: 687a ldr r2, [r7, #4] - 800c930: 0011 movs r1, r2 - 800c932: 0018 movs r0, r3 - 800c934: f000 fee4 bl 800d700 - prvUnlockQueue( pxQueue ); - 800c938: 6a3b ldr r3, [r7, #32] - 800c93a: 0018 movs r0, r3 - 800c93c: f000 fa2c bl 800cd98 - if( xTaskResumeAll() == pdFALSE ) - 800c940: f000 fd3a bl 800d3b8 - 800c944: 1e03 subs r3, r0, #0 - 800c946: d191 bne.n 800c86c - { - portYIELD_WITHIN_API(); - 800c948: f001 fed2 bl 800e6f0 - 800c94c: e78e b.n 800c86c - } - else - { - /* The queue contains data again. Loop back to try and read the - data. */ - prvUnlockQueue( pxQueue ); - 800c94e: 6a3b ldr r3, [r7, #32] - 800c950: 0018 movs r0, r3 - 800c952: f000 fa21 bl 800cd98 - ( void ) xTaskResumeAll(); - 800c956: f000 fd2f bl 800d3b8 - 800c95a: e787 b.n 800c86c - } - else - { - /* Timed out. If there is no data in the queue exit, otherwise loop - back and attempt to read the data. */ - prvUnlockQueue( pxQueue ); - 800c95c: 6a3b ldr r3, [r7, #32] - 800c95e: 0018 movs r0, r3 - 800c960: f000 fa1a bl 800cd98 - ( void ) xTaskResumeAll(); - 800c964: f000 fd28 bl 800d3b8 - - if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) - 800c968: 6a3b ldr r3, [r7, #32] - 800c96a: 0018 movs r0, r3 - 800c96c: f000 fa72 bl 800ce54 - 800c970: 1e03 subs r3, r0, #0 - 800c972: d100 bne.n 800c976 - 800c974: e77a b.n 800c86c - { - traceQUEUE_RECEIVE_FAILED( pxQueue ); - return errQUEUE_EMPTY; - 800c976: 2300 movs r3, #0 - { - mtCOVERAGE_TEST_MARKER(); - } - } - } /*lint -restore */ -} - 800c978: 0018 movs r0, r3 - 800c97a: 46bd mov sp, r7 - 800c97c: b00a add sp, #40 ; 0x28 - 800c97e: bd80 pop {r7, pc} - -0800c980 : -/*-----------------------------------------------------------*/ - -BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) -{ - 800c980: b580 push {r7, lr} - 800c982: b08a sub sp, #40 ; 0x28 - 800c984: af00 add r7, sp, #0 - 800c986: 6078 str r0, [r7, #4] - 800c988: 6039 str r1, [r7, #0] -BaseType_t xEntryTimeSet = pdFALSE; - 800c98a: 2300 movs r3, #0 - 800c98c: 627b str r3, [r7, #36] ; 0x24 -TimeOut_t xTimeOut; -Queue_t * const pxQueue = xQueue; - 800c98e: 687b ldr r3, [r7, #4] - 800c990: 61fb str r3, [r7, #28] - -#if( configUSE_MUTEXES == 1 ) - BaseType_t xInheritanceOccurred = pdFALSE; - 800c992: 2300 movs r3, #0 - 800c994: 623b str r3, [r7, #32] -#endif - - /* Check the queue pointer is not NULL. */ - configASSERT( ( pxQueue ) ); - 800c996: 69fb ldr r3, [r7, #28] - 800c998: 2b00 cmp r3, #0 - 800c99a: d101 bne.n 800c9a0 - 800c99c: b672 cpsid i - 800c99e: e7fe b.n 800c99e - - /* Check this really is a semaphore, in which case the item size will be - 0. */ - configASSERT( pxQueue->uxItemSize == 0 ); - 800c9a0: 69fb ldr r3, [r7, #28] - 800c9a2: 6c1b ldr r3, [r3, #64] ; 0x40 - 800c9a4: 2b00 cmp r3, #0 - 800c9a6: d001 beq.n 800c9ac - 800c9a8: b672 cpsid i - 800c9aa: e7fe b.n 800c9aa - - /* Cannot block if the scheduler is suspended. */ - #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) - { - configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); - 800c9ac: f001 f892 bl 800dad4 - 800c9b0: 1e03 subs r3, r0, #0 - 800c9b2: d102 bne.n 800c9ba - 800c9b4: 683b ldr r3, [r7, #0] - 800c9b6: 2b00 cmp r3, #0 - 800c9b8: d101 bne.n 800c9be - 800c9ba: 2301 movs r3, #1 - 800c9bc: e000 b.n 800c9c0 - 800c9be: 2300 movs r3, #0 - 800c9c0: 2b00 cmp r3, #0 - 800c9c2: d101 bne.n 800c9c8 - 800c9c4: b672 cpsid i - 800c9c6: e7fe b.n 800c9c6 - /*lint -save -e904 This function relaxes the coding standard somewhat to allow return - statements within the function itself. This is done in the interest - of execution time efficiency. */ - for( ;; ) - { - taskENTER_CRITICAL(); - 800c9c8: f001 fea2 bl 800e710 - { - /* Semaphores are queues with an item size of 0, and where the - number of messages in the queue is the semaphore's count value. */ - const UBaseType_t uxSemaphoreCount = pxQueue->uxMessagesWaiting; - 800c9cc: 69fb ldr r3, [r7, #28] - 800c9ce: 6b9b ldr r3, [r3, #56] ; 0x38 - 800c9d0: 61bb str r3, [r7, #24] - - /* Is there data in the queue now? To be running the calling task - must be the highest priority task wanting to access the queue. */ - if( uxSemaphoreCount > ( UBaseType_t ) 0 ) - 800c9d2: 69bb ldr r3, [r7, #24] - 800c9d4: 2b00 cmp r3, #0 - 800c9d6: d01d beq.n 800ca14 - { - traceQUEUE_RECEIVE( pxQueue ); - - /* Semaphores are queues with a data size of zero and where the - messages waiting is the semaphore's count. Reduce the count. */ - pxQueue->uxMessagesWaiting = uxSemaphoreCount - ( UBaseType_t ) 1; - 800c9d8: 69bb ldr r3, [r7, #24] - 800c9da: 1e5a subs r2, r3, #1 - 800c9dc: 69fb ldr r3, [r7, #28] - 800c9de: 639a str r2, [r3, #56] ; 0x38 - - #if ( configUSE_MUTEXES == 1 ) - { - if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) - 800c9e0: 69fb ldr r3, [r7, #28] - 800c9e2: 681b ldr r3, [r3, #0] - 800c9e4: 2b00 cmp r3, #0 - 800c9e6: d104 bne.n 800c9f2 - { - /* Record the information required to implement - priority inheritance should it become necessary. */ - pxQueue->u.xSemaphore.xMutexHolder = pvTaskIncrementMutexHeldCount(); - 800c9e8: f001 f9c4 bl 800dd74 - 800c9ec: 0002 movs r2, r0 - 800c9ee: 69fb ldr r3, [r7, #28] - 800c9f0: 609a str r2, [r3, #8] - } - #endif /* configUSE_MUTEXES */ - - /* Check to see if other tasks are blocked waiting to give the - semaphore, and if so, unblock the highest priority such task. */ - if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) - 800c9f2: 69fb ldr r3, [r7, #28] - 800c9f4: 691b ldr r3, [r3, #16] - 800c9f6: 2b00 cmp r3, #0 - 800c9f8: d008 beq.n 800ca0c - { - if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) - 800c9fa: 69fb ldr r3, [r7, #28] - 800c9fc: 3310 adds r3, #16 - 800c9fe: 0018 movs r0, r3 - 800ca00: f000 fec2 bl 800d788 - 800ca04: 1e03 subs r3, r0, #0 - 800ca06: d001 beq.n 800ca0c - { - queueYIELD_IF_USING_PREEMPTION(); - 800ca08: f001 fe72 bl 800e6f0 - else - { - mtCOVERAGE_TEST_MARKER(); - } - - taskEXIT_CRITICAL(); - 800ca0c: f001 fe92 bl 800e734 - return pdPASS; - 800ca10: 2301 movs r3, #1 - 800ca12: e08b b.n 800cb2c - } - else - { - if( xTicksToWait == ( TickType_t ) 0 ) - 800ca14: 683b ldr r3, [r7, #0] - 800ca16: 2b00 cmp r3, #0 - 800ca18: d108 bne.n 800ca2c - /* For inheritance to have occurred there must have been an - initial timeout, and an adjusted timeout cannot become 0, as - if it were 0 the function would have exited. */ - #if( configUSE_MUTEXES == 1 ) - { - configASSERT( xInheritanceOccurred == pdFALSE ); - 800ca1a: 6a3b ldr r3, [r7, #32] - 800ca1c: 2b00 cmp r3, #0 - 800ca1e: d001 beq.n 800ca24 - 800ca20: b672 cpsid i - 800ca22: e7fe b.n 800ca22 - } - #endif /* configUSE_MUTEXES */ - - /* The semaphore count was 0 and no block time is specified - (or the block time has expired) so exit now. */ - taskEXIT_CRITICAL(); - 800ca24: f001 fe86 bl 800e734 - traceQUEUE_RECEIVE_FAILED( pxQueue ); - return errQUEUE_EMPTY; - 800ca28: 2300 movs r3, #0 - 800ca2a: e07f b.n 800cb2c - } - else if( xEntryTimeSet == pdFALSE ) - 800ca2c: 6a7b ldr r3, [r7, #36] ; 0x24 - 800ca2e: 2b00 cmp r3, #0 - 800ca30: d106 bne.n 800ca40 - { - /* The semaphore count was 0 and a block time was specified - so configure the timeout structure ready to block. */ - vTaskInternalSetTimeOutState( &xTimeOut ); - 800ca32: 230c movs r3, #12 - 800ca34: 18fb adds r3, r7, r3 - 800ca36: 0018 movs r0, r3 - 800ca38: f000 ff02 bl 800d840 - xEntryTimeSet = pdTRUE; - 800ca3c: 2301 movs r3, #1 - 800ca3e: 627b str r3, [r7, #36] ; 0x24 - /* Entry time was already set. */ - mtCOVERAGE_TEST_MARKER(); - } - } - } - taskEXIT_CRITICAL(); - 800ca40: f001 fe78 bl 800e734 - - /* Interrupts and other tasks can give to and take from the semaphore - now the critical section has been exited. */ - - vTaskSuspendAll(); - 800ca44: f000 fcac bl 800d3a0 - prvLockQueue( pxQueue ); - 800ca48: f001 fe62 bl 800e710 - 800ca4c: 69fb ldr r3, [r7, #28] - 800ca4e: 2244 movs r2, #68 ; 0x44 - 800ca50: 5c9b ldrb r3, [r3, r2] - 800ca52: b25b sxtb r3, r3 - 800ca54: 3301 adds r3, #1 - 800ca56: d103 bne.n 800ca60 - 800ca58: 69fb ldr r3, [r7, #28] - 800ca5a: 2244 movs r2, #68 ; 0x44 - 800ca5c: 2100 movs r1, #0 - 800ca5e: 5499 strb r1, [r3, r2] - 800ca60: 69fb ldr r3, [r7, #28] - 800ca62: 2245 movs r2, #69 ; 0x45 - 800ca64: 5c9b ldrb r3, [r3, r2] - 800ca66: b25b sxtb r3, r3 - 800ca68: 3301 adds r3, #1 - 800ca6a: d103 bne.n 800ca74 - 800ca6c: 69fb ldr r3, [r7, #28] - 800ca6e: 2245 movs r2, #69 ; 0x45 - 800ca70: 2100 movs r1, #0 - 800ca72: 5499 strb r1, [r3, r2] - 800ca74: f001 fe5e bl 800e734 - - /* Update the timeout state to see if it has expired yet. */ - if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) - 800ca78: 003a movs r2, r7 - 800ca7a: 230c movs r3, #12 - 800ca7c: 18fb adds r3, r7, r3 - 800ca7e: 0011 movs r1, r2 - 800ca80: 0018 movs r0, r3 - 800ca82: f000 fef1 bl 800d868 - 800ca86: 1e03 subs r3, r0, #0 - 800ca88: d12e bne.n 800cae8 - { - /* A block time is specified and not expired. If the semaphore - count is 0 then enter the Blocked state to wait for a semaphore to - become available. As semaphores are implemented with queues the - queue being empty is equivalent to the semaphore count being 0. */ - if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) - 800ca8a: 69fb ldr r3, [r7, #28] - 800ca8c: 0018 movs r0, r3 - 800ca8e: f000 f9e1 bl 800ce54 - 800ca92: 1e03 subs r3, r0, #0 - 800ca94: d021 beq.n 800cada - { - traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ); - - #if ( configUSE_MUTEXES == 1 ) - { - if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) - 800ca96: 69fb ldr r3, [r7, #28] - 800ca98: 681b ldr r3, [r3, #0] - 800ca9a: 2b00 cmp r3, #0 - 800ca9c: d10a bne.n 800cab4 - { - taskENTER_CRITICAL(); - 800ca9e: f001 fe37 bl 800e710 - { - xInheritanceOccurred = xTaskPriorityInherit( pxQueue->u.xSemaphore.xMutexHolder ); - 800caa2: 69fb ldr r3, [r7, #28] - 800caa4: 689b ldr r3, [r3, #8] - 800caa6: 0018 movs r0, r3 - 800caa8: f001 f830 bl 800db0c - 800caac: 0003 movs r3, r0 - 800caae: 623b str r3, [r7, #32] - } - taskEXIT_CRITICAL(); - 800cab0: f001 fe40 bl 800e734 - mtCOVERAGE_TEST_MARKER(); - } - } - #endif - - vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); - 800cab4: 69fb ldr r3, [r7, #28] - 800cab6: 3324 adds r3, #36 ; 0x24 - 800cab8: 683a ldr r2, [r7, #0] - 800caba: 0011 movs r1, r2 - 800cabc: 0018 movs r0, r3 - 800cabe: f000 fe1f bl 800d700 - prvUnlockQueue( pxQueue ); - 800cac2: 69fb ldr r3, [r7, #28] - 800cac4: 0018 movs r0, r3 - 800cac6: f000 f967 bl 800cd98 - if( xTaskResumeAll() == pdFALSE ) - 800caca: f000 fc75 bl 800d3b8 - 800cace: 1e03 subs r3, r0, #0 - 800cad0: d000 beq.n 800cad4 - 800cad2: e779 b.n 800c9c8 - { - portYIELD_WITHIN_API(); - 800cad4: f001 fe0c bl 800e6f0 - 800cad8: e776 b.n 800c9c8 - } - else - { - /* There was no timeout and the semaphore count was not 0, so - attempt to take the semaphore again. */ - prvUnlockQueue( pxQueue ); - 800cada: 69fb ldr r3, [r7, #28] - 800cadc: 0018 movs r0, r3 - 800cade: f000 f95b bl 800cd98 - ( void ) xTaskResumeAll(); - 800cae2: f000 fc69 bl 800d3b8 - 800cae6: e76f b.n 800c9c8 - } - } - else - { - /* Timed out. */ - prvUnlockQueue( pxQueue ); - 800cae8: 69fb ldr r3, [r7, #28] - 800caea: 0018 movs r0, r3 - 800caec: f000 f954 bl 800cd98 - ( void ) xTaskResumeAll(); - 800caf0: f000 fc62 bl 800d3b8 - - /* If the semaphore count is 0 exit now as the timeout has - expired. Otherwise return to attempt to take the semaphore that is - known to be available. As semaphores are implemented by queues the - queue being empty is equivalent to the semaphore count being 0. */ - if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) - 800caf4: 69fb ldr r3, [r7, #28] - 800caf6: 0018 movs r0, r3 - 800caf8: f000 f9ac bl 800ce54 - 800cafc: 1e03 subs r3, r0, #0 - 800cafe: d100 bne.n 800cb02 - 800cb00: e762 b.n 800c9c8 - #if ( configUSE_MUTEXES == 1 ) - { - /* xInheritanceOccurred could only have be set if - pxQueue->uxQueueType == queueQUEUE_IS_MUTEX so no need to - test the mutex type again to check it is actually a mutex. */ - if( xInheritanceOccurred != pdFALSE ) - 800cb02: 6a3b ldr r3, [r7, #32] - 800cb04: 2b00 cmp r3, #0 - 800cb06: d010 beq.n 800cb2a - { - taskENTER_CRITICAL(); - 800cb08: f001 fe02 bl 800e710 - /* This task blocking on the mutex caused another - task to inherit this task's priority. Now this task - has timed out the priority should be disinherited - again, but only as low as the next highest priority - task that is waiting for the same mutex. */ - uxHighestWaitingPriority = prvGetDisinheritPriorityAfterTimeout( pxQueue ); - 800cb0c: 69fb ldr r3, [r7, #28] - 800cb0e: 0018 movs r0, r3 - 800cb10: f000 f89b bl 800cc4a - 800cb14: 0003 movs r3, r0 - 800cb16: 617b str r3, [r7, #20] - vTaskPriorityDisinheritAfterTimeout( pxQueue->u.xSemaphore.xMutexHolder, uxHighestWaitingPriority ); - 800cb18: 69fb ldr r3, [r7, #28] - 800cb1a: 689b ldr r3, [r3, #8] - 800cb1c: 697a ldr r2, [r7, #20] - 800cb1e: 0011 movs r1, r2 - 800cb20: 0018 movs r0, r3 - 800cb22: f001 f8b7 bl 800dc94 - } - taskEXIT_CRITICAL(); - 800cb26: f001 fe05 bl 800e734 - } - } - #endif /* configUSE_MUTEXES */ - - traceQUEUE_RECEIVE_FAILED( pxQueue ); - return errQUEUE_EMPTY; - 800cb2a: 2300 movs r3, #0 - { - mtCOVERAGE_TEST_MARKER(); - } - } - } /*lint -restore */ -} - 800cb2c: 0018 movs r0, r3 - 800cb2e: 46bd mov sp, r7 - 800cb30: b00a add sp, #40 ; 0x28 - 800cb32: bd80 pop {r7, pc} - -0800cb34 : - } /*lint -restore */ -} -/*-----------------------------------------------------------*/ - -BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) -{ - 800cb34: b590 push {r4, r7, lr} - 800cb36: b08b sub sp, #44 ; 0x2c - 800cb38: af00 add r7, sp, #0 - 800cb3a: 60f8 str r0, [r7, #12] - 800cb3c: 60b9 str r1, [r7, #8] - 800cb3e: 607a str r2, [r7, #4] -BaseType_t xReturn; -UBaseType_t uxSavedInterruptStatus; -Queue_t * const pxQueue = xQueue; - 800cb40: 68fb ldr r3, [r7, #12] - 800cb42: 623b str r3, [r7, #32] - - configASSERT( pxQueue ); - 800cb44: 6a3b ldr r3, [r7, #32] - 800cb46: 2b00 cmp r3, #0 - 800cb48: d101 bne.n 800cb4e - 800cb4a: b672 cpsid i - 800cb4c: e7fe b.n 800cb4c - configASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); - 800cb4e: 68bb ldr r3, [r7, #8] - 800cb50: 2b00 cmp r3, #0 - 800cb52: d103 bne.n 800cb5c - 800cb54: 6a3b ldr r3, [r7, #32] - 800cb56: 6c1b ldr r3, [r3, #64] ; 0x40 - 800cb58: 2b00 cmp r3, #0 - 800cb5a: d101 bne.n 800cb60 - 800cb5c: 2301 movs r3, #1 - 800cb5e: e000 b.n 800cb62 - 800cb60: 2300 movs r3, #0 - 800cb62: 2b00 cmp r3, #0 - 800cb64: d101 bne.n 800cb6a - 800cb66: b672 cpsid i - 800cb68: e7fe b.n 800cb68 - safe API to ensure interrupt entry is as fast and as simple as possible. - More information (albeit Cortex-M specific) is provided on the following - link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ - portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); - - uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); - 800cb6a: f001 fdfb bl 800e764 - 800cb6e: 0003 movs r3, r0 - 800cb70: 61fb str r3, [r7, #28] - { - const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; - 800cb72: 6a3b ldr r3, [r7, #32] - 800cb74: 6b9b ldr r3, [r3, #56] ; 0x38 - 800cb76: 61bb str r3, [r7, #24] - - /* Cannot block in an ISR, so check there is data available. */ - if( uxMessagesWaiting > ( UBaseType_t ) 0 ) - 800cb78: 69bb ldr r3, [r7, #24] - 800cb7a: 2b00 cmp r3, #0 - 800cb7c: d032 beq.n 800cbe4 - { - const int8_t cRxLock = pxQueue->cRxLock; - 800cb7e: 2417 movs r4, #23 - 800cb80: 193b adds r3, r7, r4 - 800cb82: 6a3a ldr r2, [r7, #32] - 800cb84: 2144 movs r1, #68 ; 0x44 - 800cb86: 5c52 ldrb r2, [r2, r1] - 800cb88: 701a strb r2, [r3, #0] - - traceQUEUE_RECEIVE_FROM_ISR( pxQueue ); - - prvCopyDataFromQueue( pxQueue, pvBuffer ); - 800cb8a: 68ba ldr r2, [r7, #8] - 800cb8c: 6a3b ldr r3, [r7, #32] - 800cb8e: 0011 movs r1, r2 - 800cb90: 0018 movs r0, r3 - 800cb92: f000 f8db bl 800cd4c - pxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1; - 800cb96: 69bb ldr r3, [r7, #24] - 800cb98: 1e5a subs r2, r3, #1 - 800cb9a: 6a3b ldr r3, [r7, #32] - 800cb9c: 639a str r2, [r3, #56] ; 0x38 - - /* If the queue is locked the event list will not be modified. - Instead update the lock count so the task that unlocks the queue - will know that an ISR has removed data while the queue was - locked. */ - if( cRxLock == queueUNLOCKED ) - 800cb9e: 193b adds r3, r7, r4 - 800cba0: 781b ldrb r3, [r3, #0] - 800cba2: b25b sxtb r3, r3 - 800cba4: 3301 adds r3, #1 - 800cba6: d111 bne.n 800cbcc - { - if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) - 800cba8: 6a3b ldr r3, [r7, #32] - 800cbaa: 691b ldr r3, [r3, #16] - 800cbac: 2b00 cmp r3, #0 - 800cbae: d016 beq.n 800cbde - { - if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) - 800cbb0: 6a3b ldr r3, [r7, #32] - 800cbb2: 3310 adds r3, #16 - 800cbb4: 0018 movs r0, r3 - 800cbb6: f000 fde7 bl 800d788 - 800cbba: 1e03 subs r3, r0, #0 - 800cbbc: d00f beq.n 800cbde - { - /* The task waiting has a higher priority than us so - force a context switch. */ - if( pxHigherPriorityTaskWoken != NULL ) - 800cbbe: 687b ldr r3, [r7, #4] - 800cbc0: 2b00 cmp r3, #0 - 800cbc2: d00c beq.n 800cbde - { - *pxHigherPriorityTaskWoken = pdTRUE; - 800cbc4: 687b ldr r3, [r7, #4] - 800cbc6: 2201 movs r2, #1 - 800cbc8: 601a str r2, [r3, #0] - 800cbca: e008 b.n 800cbde - } - else - { - /* Increment the lock count so the task that unlocks the queue - knows that data was removed while it was locked. */ - pxQueue->cRxLock = ( int8_t ) ( cRxLock + 1 ); - 800cbcc: 2317 movs r3, #23 - 800cbce: 18fb adds r3, r7, r3 - 800cbd0: 781b ldrb r3, [r3, #0] - 800cbd2: 3301 adds r3, #1 - 800cbd4: b2db uxtb r3, r3 - 800cbd6: b259 sxtb r1, r3 - 800cbd8: 6a3b ldr r3, [r7, #32] - 800cbda: 2244 movs r2, #68 ; 0x44 - 800cbdc: 5499 strb r1, [r3, r2] - } - - xReturn = pdPASS; - 800cbde: 2301 movs r3, #1 - 800cbe0: 627b str r3, [r7, #36] ; 0x24 - 800cbe2: e001 b.n 800cbe8 - } - else - { - xReturn = pdFAIL; - 800cbe4: 2300 movs r3, #0 - 800cbe6: 627b str r3, [r7, #36] ; 0x24 - traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue ); - } - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); - 800cbe8: 69fb ldr r3, [r7, #28] - 800cbea: 0018 movs r0, r3 - 800cbec: f001 fdc0 bl 800e770 - - return xReturn; - 800cbf0: 6a7b ldr r3, [r7, #36] ; 0x24 -} - 800cbf2: 0018 movs r0, r3 - 800cbf4: 46bd mov sp, r7 - 800cbf6: b00b add sp, #44 ; 0x2c - 800cbf8: bd90 pop {r4, r7, pc} - -0800cbfa : - return xReturn; -} -/*-----------------------------------------------------------*/ - -UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) -{ - 800cbfa: b580 push {r7, lr} - 800cbfc: b084 sub sp, #16 - 800cbfe: af00 add r7, sp, #0 - 800cc00: 6078 str r0, [r7, #4] -UBaseType_t uxReturn; - - configASSERT( xQueue ); - 800cc02: 687b ldr r3, [r7, #4] - 800cc04: 2b00 cmp r3, #0 - 800cc06: d101 bne.n 800cc0c - 800cc08: b672 cpsid i - 800cc0a: e7fe b.n 800cc0a - - taskENTER_CRITICAL(); - 800cc0c: f001 fd80 bl 800e710 - { - uxReturn = ( ( Queue_t * ) xQueue )->uxMessagesWaiting; - 800cc10: 687b ldr r3, [r7, #4] - 800cc12: 6b9b ldr r3, [r3, #56] ; 0x38 - 800cc14: 60fb str r3, [r7, #12] - } - taskEXIT_CRITICAL(); - 800cc16: f001 fd8d bl 800e734 - - return uxReturn; - 800cc1a: 68fb ldr r3, [r7, #12] -} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ - 800cc1c: 0018 movs r0, r3 - 800cc1e: 46bd mov sp, r7 - 800cc20: b004 add sp, #16 - 800cc22: bd80 pop {r7, pc} - -0800cc24 : - return uxReturn; -} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ -/*-----------------------------------------------------------*/ - -UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) -{ - 800cc24: b580 push {r7, lr} - 800cc26: b084 sub sp, #16 - 800cc28: af00 add r7, sp, #0 - 800cc2a: 6078 str r0, [r7, #4] -UBaseType_t uxReturn; -Queue_t * const pxQueue = xQueue; - 800cc2c: 687b ldr r3, [r7, #4] - 800cc2e: 60fb str r3, [r7, #12] - - configASSERT( pxQueue ); - 800cc30: 68fb ldr r3, [r7, #12] - 800cc32: 2b00 cmp r3, #0 - 800cc34: d101 bne.n 800cc3a - 800cc36: b672 cpsid i - 800cc38: e7fe b.n 800cc38 - uxReturn = pxQueue->uxMessagesWaiting; - 800cc3a: 68fb ldr r3, [r7, #12] - 800cc3c: 6b9b ldr r3, [r3, #56] ; 0x38 - 800cc3e: 60bb str r3, [r7, #8] - - return uxReturn; - 800cc40: 68bb ldr r3, [r7, #8] -} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ - 800cc42: 0018 movs r0, r3 - 800cc44: 46bd mov sp, r7 - 800cc46: b004 add sp, #16 - 800cc48: bd80 pop {r7, pc} - -0800cc4a : -/*-----------------------------------------------------------*/ - -#if( configUSE_MUTEXES == 1 ) - - static UBaseType_t prvGetDisinheritPriorityAfterTimeout( const Queue_t * const pxQueue ) - { - 800cc4a: b580 push {r7, lr} - 800cc4c: b084 sub sp, #16 - 800cc4e: af00 add r7, sp, #0 - 800cc50: 6078 str r0, [r7, #4] - priority, but the waiting task times out, then the holder should - disinherit the priority - but only down to the highest priority of any - other tasks that are waiting for the same mutex. For this purpose, - return the priority of the highest priority task that is waiting for the - mutex. */ - if( listCURRENT_LIST_LENGTH( &( pxQueue->xTasksWaitingToReceive ) ) > 0U ) - 800cc52: 687b ldr r3, [r7, #4] - 800cc54: 6a5b ldr r3, [r3, #36] ; 0x24 - 800cc56: 2b00 cmp r3, #0 - 800cc58: d006 beq.n 800cc68 - { - uxHighestPriorityOfWaitingTasks = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) listGET_ITEM_VALUE_OF_HEAD_ENTRY( &( pxQueue->xTasksWaitingToReceive ) ); - 800cc5a: 687b ldr r3, [r7, #4] - 800cc5c: 6b1b ldr r3, [r3, #48] ; 0x30 - 800cc5e: 681b ldr r3, [r3, #0] - 800cc60: 2238 movs r2, #56 ; 0x38 - 800cc62: 1ad3 subs r3, r2, r3 - 800cc64: 60fb str r3, [r7, #12] - 800cc66: e001 b.n 800cc6c - } - else - { - uxHighestPriorityOfWaitingTasks = tskIDLE_PRIORITY; - 800cc68: 2300 movs r3, #0 - 800cc6a: 60fb str r3, [r7, #12] - } - - return uxHighestPriorityOfWaitingTasks; - 800cc6c: 68fb ldr r3, [r7, #12] - } - 800cc6e: 0018 movs r0, r3 - 800cc70: 46bd mov sp, r7 - 800cc72: b004 add sp, #16 - 800cc74: bd80 pop {r7, pc} - -0800cc76 : - -#endif /* configUSE_MUTEXES */ -/*-----------------------------------------------------------*/ - -static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ) -{ - 800cc76: b580 push {r7, lr} - 800cc78: b086 sub sp, #24 - 800cc7a: af00 add r7, sp, #0 - 800cc7c: 60f8 str r0, [r7, #12] - 800cc7e: 60b9 str r1, [r7, #8] - 800cc80: 607a str r2, [r7, #4] -BaseType_t xReturn = pdFALSE; - 800cc82: 2300 movs r3, #0 - 800cc84: 617b str r3, [r7, #20] -UBaseType_t uxMessagesWaiting; - - /* This function is called from a critical section. */ - - uxMessagesWaiting = pxQueue->uxMessagesWaiting; - 800cc86: 68fb ldr r3, [r7, #12] - 800cc88: 6b9b ldr r3, [r3, #56] ; 0x38 - 800cc8a: 613b str r3, [r7, #16] - - if( pxQueue->uxItemSize == ( UBaseType_t ) 0 ) - 800cc8c: 68fb ldr r3, [r7, #12] - 800cc8e: 6c1b ldr r3, [r3, #64] ; 0x40 - 800cc90: 2b00 cmp r3, #0 - 800cc92: d10e bne.n 800ccb2 - { - #if ( configUSE_MUTEXES == 1 ) - { - if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) - 800cc94: 68fb ldr r3, [r7, #12] - 800cc96: 681b ldr r3, [r3, #0] - 800cc98: 2b00 cmp r3, #0 - 800cc9a: d14e bne.n 800cd3a - { - /* The mutex is no longer being held. */ - xReturn = xTaskPriorityDisinherit( pxQueue->u.xSemaphore.xMutexHolder ); - 800cc9c: 68fb ldr r3, [r7, #12] - 800cc9e: 689b ldr r3, [r3, #8] - 800cca0: 0018 movs r0, r3 - 800cca2: f000 ff9b bl 800dbdc - 800cca6: 0003 movs r3, r0 - 800cca8: 617b str r3, [r7, #20] - pxQueue->u.xSemaphore.xMutexHolder = NULL; - 800ccaa: 68fb ldr r3, [r7, #12] - 800ccac: 2200 movs r2, #0 - 800ccae: 609a str r2, [r3, #8] - 800ccb0: e043 b.n 800cd3a - mtCOVERAGE_TEST_MARKER(); - } - } - #endif /* configUSE_MUTEXES */ - } - else if( xPosition == queueSEND_TO_BACK ) - 800ccb2: 687b ldr r3, [r7, #4] - 800ccb4: 2b00 cmp r3, #0 - 800ccb6: d119 bne.n 800ccec - { - ( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */ - 800ccb8: 68fb ldr r3, [r7, #12] - 800ccba: 6858 ldr r0, [r3, #4] - 800ccbc: 68fb ldr r3, [r7, #12] - 800ccbe: 6c1a ldr r2, [r3, #64] ; 0x40 - 800ccc0: 68bb ldr r3, [r7, #8] - 800ccc2: 0019 movs r1, r3 - 800ccc4: f001 ff9a bl 800ebfc - pxQueue->pcWriteTo += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */ - 800ccc8: 68fb ldr r3, [r7, #12] - 800ccca: 685a ldr r2, [r3, #4] - 800cccc: 68fb ldr r3, [r7, #12] - 800ccce: 6c1b ldr r3, [r3, #64] ; 0x40 - 800ccd0: 18d2 adds r2, r2, r3 - 800ccd2: 68fb ldr r3, [r7, #12] - 800ccd4: 605a str r2, [r3, #4] - if( pxQueue->pcWriteTo >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ - 800ccd6: 68fb ldr r3, [r7, #12] - 800ccd8: 685a ldr r2, [r3, #4] - 800ccda: 68fb ldr r3, [r7, #12] - 800ccdc: 689b ldr r3, [r3, #8] - 800ccde: 429a cmp r2, r3 - 800cce0: d32b bcc.n 800cd3a - { - pxQueue->pcWriteTo = pxQueue->pcHead; - 800cce2: 68fb ldr r3, [r7, #12] - 800cce4: 681a ldr r2, [r3, #0] - 800cce6: 68fb ldr r3, [r7, #12] - 800cce8: 605a str r2, [r3, #4] - 800ccea: e026 b.n 800cd3a - mtCOVERAGE_TEST_MARKER(); - } - } - else - { - ( void ) memcpy( ( void * ) pxQueue->u.xQueue.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e9087 !e418 MISRA exception as the casts are only redundant for some ports. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. Assert checks null pointer only used when length is 0. */ - 800ccec: 68fb ldr r3, [r7, #12] - 800ccee: 68d8 ldr r0, [r3, #12] - 800ccf0: 68fb ldr r3, [r7, #12] - 800ccf2: 6c1a ldr r2, [r3, #64] ; 0x40 - 800ccf4: 68bb ldr r3, [r7, #8] - 800ccf6: 0019 movs r1, r3 - 800ccf8: f001 ff80 bl 800ebfc - pxQueue->u.xQueue.pcReadFrom -= pxQueue->uxItemSize; - 800ccfc: 68fb ldr r3, [r7, #12] - 800ccfe: 68da ldr r2, [r3, #12] - 800cd00: 68fb ldr r3, [r7, #12] - 800cd02: 6c1b ldr r3, [r3, #64] ; 0x40 - 800cd04: 425b negs r3, r3 - 800cd06: 18d2 adds r2, r2, r3 - 800cd08: 68fb ldr r3, [r7, #12] - 800cd0a: 60da str r2, [r3, #12] - if( pxQueue->u.xQueue.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ - 800cd0c: 68fb ldr r3, [r7, #12] - 800cd0e: 68da ldr r2, [r3, #12] - 800cd10: 68fb ldr r3, [r7, #12] - 800cd12: 681b ldr r3, [r3, #0] - 800cd14: 429a cmp r2, r3 - 800cd16: d207 bcs.n 800cd28 - { - pxQueue->u.xQueue.pcReadFrom = ( pxQueue->u.xQueue.pcTail - pxQueue->uxItemSize ); - 800cd18: 68fb ldr r3, [r7, #12] - 800cd1a: 689a ldr r2, [r3, #8] - 800cd1c: 68fb ldr r3, [r7, #12] - 800cd1e: 6c1b ldr r3, [r3, #64] ; 0x40 - 800cd20: 425b negs r3, r3 - 800cd22: 18d2 adds r2, r2, r3 - 800cd24: 68fb ldr r3, [r7, #12] - 800cd26: 60da str r2, [r3, #12] - else - { - mtCOVERAGE_TEST_MARKER(); - } - - if( xPosition == queueOVERWRITE ) - 800cd28: 687b ldr r3, [r7, #4] - 800cd2a: 2b02 cmp r3, #2 - 800cd2c: d105 bne.n 800cd3a - { - if( uxMessagesWaiting > ( UBaseType_t ) 0 ) - 800cd2e: 693b ldr r3, [r7, #16] - 800cd30: 2b00 cmp r3, #0 - 800cd32: d002 beq.n 800cd3a - { - /* An item is not being added but overwritten, so subtract - one from the recorded number of items in the queue so when - one is added again below the number of recorded items remains - correct. */ - --uxMessagesWaiting; - 800cd34: 693b ldr r3, [r7, #16] - 800cd36: 3b01 subs r3, #1 - 800cd38: 613b str r3, [r7, #16] - { - mtCOVERAGE_TEST_MARKER(); - } - } - - pxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1; - 800cd3a: 693b ldr r3, [r7, #16] - 800cd3c: 1c5a adds r2, r3, #1 - 800cd3e: 68fb ldr r3, [r7, #12] - 800cd40: 639a str r2, [r3, #56] ; 0x38 - - return xReturn; - 800cd42: 697b ldr r3, [r7, #20] -} - 800cd44: 0018 movs r0, r3 - 800cd46: 46bd mov sp, r7 - 800cd48: b006 add sp, #24 - 800cd4a: bd80 pop {r7, pc} - -0800cd4c : -/*-----------------------------------------------------------*/ - -static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ) -{ - 800cd4c: b580 push {r7, lr} - 800cd4e: b082 sub sp, #8 - 800cd50: af00 add r7, sp, #0 - 800cd52: 6078 str r0, [r7, #4] - 800cd54: 6039 str r1, [r7, #0] - if( pxQueue->uxItemSize != ( UBaseType_t ) 0 ) - 800cd56: 687b ldr r3, [r7, #4] - 800cd58: 6c1b ldr r3, [r3, #64] ; 0x40 - 800cd5a: 2b00 cmp r3, #0 - 800cd5c: d018 beq.n 800cd90 - { - pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */ - 800cd5e: 687b ldr r3, [r7, #4] - 800cd60: 68da ldr r2, [r3, #12] - 800cd62: 687b ldr r3, [r7, #4] - 800cd64: 6c1b ldr r3, [r3, #64] ; 0x40 - 800cd66: 18d2 adds r2, r2, r3 - 800cd68: 687b ldr r3, [r7, #4] - 800cd6a: 60da str r2, [r3, #12] - if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */ - 800cd6c: 687b ldr r3, [r7, #4] - 800cd6e: 68da ldr r2, [r3, #12] - 800cd70: 687b ldr r3, [r7, #4] - 800cd72: 689b ldr r3, [r3, #8] - 800cd74: 429a cmp r2, r3 - 800cd76: d303 bcc.n 800cd80 - { - pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead; - 800cd78: 687b ldr r3, [r7, #4] - 800cd7a: 681a ldr r2, [r3, #0] - 800cd7c: 687b ldr r3, [r7, #4] - 800cd7e: 60da str r2, [r3, #12] - } - else - { - mtCOVERAGE_TEST_MARKER(); - } - ( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports. Also previous logic ensures a null pointer can only be passed to memcpy() when the count is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */ - 800cd80: 687b ldr r3, [r7, #4] - 800cd82: 68d9 ldr r1, [r3, #12] - 800cd84: 687b ldr r3, [r7, #4] - 800cd86: 6c1a ldr r2, [r3, #64] ; 0x40 - 800cd88: 683b ldr r3, [r7, #0] - 800cd8a: 0018 movs r0, r3 - 800cd8c: f001 ff36 bl 800ebfc - } -} - 800cd90: 46c0 nop ; (mov r8, r8) - 800cd92: 46bd mov sp, r7 - 800cd94: b002 add sp, #8 - 800cd96: bd80 pop {r7, pc} - -0800cd98 : -/*-----------------------------------------------------------*/ - -static void prvUnlockQueue( Queue_t * const pxQueue ) -{ - 800cd98: b580 push {r7, lr} - 800cd9a: b084 sub sp, #16 - 800cd9c: af00 add r7, sp, #0 - 800cd9e: 6078 str r0, [r7, #4] - - /* The lock counts contains the number of extra data items placed or - removed from the queue while the queue was locked. When a queue is - locked items can be added or removed, but the event lists cannot be - updated. */ - taskENTER_CRITICAL(); - 800cda0: f001 fcb6 bl 800e710 - { - int8_t cTxLock = pxQueue->cTxLock; - 800cda4: 230f movs r3, #15 - 800cda6: 18fb adds r3, r7, r3 - 800cda8: 687a ldr r2, [r7, #4] - 800cdaa: 2145 movs r1, #69 ; 0x45 - 800cdac: 5c52 ldrb r2, [r2, r1] - 800cdae: 701a strb r2, [r3, #0] - - /* See if data was added to the queue while it was locked. */ - while( cTxLock > queueLOCKED_UNMODIFIED ) - 800cdb0: e013 b.n 800cdda - } - #else /* configUSE_QUEUE_SETS */ - { - /* Tasks that are removed from the event list will get added to - the pending ready list as the scheduler is still suspended. */ - if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) - 800cdb2: 687b ldr r3, [r7, #4] - 800cdb4: 6a5b ldr r3, [r3, #36] ; 0x24 - 800cdb6: 2b00 cmp r3, #0 - 800cdb8: d016 beq.n 800cde8 - { - if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) - 800cdba: 687b ldr r3, [r7, #4] - 800cdbc: 3324 adds r3, #36 ; 0x24 - 800cdbe: 0018 movs r0, r3 - 800cdc0: f000 fce2 bl 800d788 - 800cdc4: 1e03 subs r3, r0, #0 - 800cdc6: d001 beq.n 800cdcc - { - /* The task waiting has a higher priority so record that - a context switch is required. */ - vTaskMissedYield(); - 800cdc8: f000 fd9e bl 800d908 - break; - } - } - #endif /* configUSE_QUEUE_SETS */ - - --cTxLock; - 800cdcc: 210f movs r1, #15 - 800cdce: 187b adds r3, r7, r1 - 800cdd0: 781b ldrb r3, [r3, #0] - 800cdd2: 3b01 subs r3, #1 - 800cdd4: b2da uxtb r2, r3 - 800cdd6: 187b adds r3, r7, r1 - 800cdd8: 701a strb r2, [r3, #0] - while( cTxLock > queueLOCKED_UNMODIFIED ) - 800cdda: 230f movs r3, #15 - 800cddc: 18fb adds r3, r7, r3 - 800cdde: 781b ldrb r3, [r3, #0] - 800cde0: b25b sxtb r3, r3 - 800cde2: 2b00 cmp r3, #0 - 800cde4: dce5 bgt.n 800cdb2 - 800cde6: e000 b.n 800cdea - break; - 800cde8: 46c0 nop ; (mov r8, r8) - } - - pxQueue->cTxLock = queueUNLOCKED; - 800cdea: 687b ldr r3, [r7, #4] - 800cdec: 2245 movs r2, #69 ; 0x45 - 800cdee: 21ff movs r1, #255 ; 0xff - 800cdf0: 5499 strb r1, [r3, r2] - } - taskEXIT_CRITICAL(); - 800cdf2: f001 fc9f bl 800e734 - - /* Do the same for the Rx lock. */ - taskENTER_CRITICAL(); - 800cdf6: f001 fc8b bl 800e710 - { - int8_t cRxLock = pxQueue->cRxLock; - 800cdfa: 230e movs r3, #14 - 800cdfc: 18fb adds r3, r7, r3 - 800cdfe: 687a ldr r2, [r7, #4] - 800ce00: 2144 movs r1, #68 ; 0x44 - 800ce02: 5c52 ldrb r2, [r2, r1] - 800ce04: 701a strb r2, [r3, #0] - - while( cRxLock > queueLOCKED_UNMODIFIED ) - 800ce06: e013 b.n 800ce30 - { - if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) - 800ce08: 687b ldr r3, [r7, #4] - 800ce0a: 691b ldr r3, [r3, #16] - 800ce0c: 2b00 cmp r3, #0 - 800ce0e: d016 beq.n 800ce3e - { - if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) - 800ce10: 687b ldr r3, [r7, #4] - 800ce12: 3310 adds r3, #16 - 800ce14: 0018 movs r0, r3 - 800ce16: f000 fcb7 bl 800d788 - 800ce1a: 1e03 subs r3, r0, #0 - 800ce1c: d001 beq.n 800ce22 - { - vTaskMissedYield(); - 800ce1e: f000 fd73 bl 800d908 - else - { - mtCOVERAGE_TEST_MARKER(); - } - - --cRxLock; - 800ce22: 210e movs r1, #14 - 800ce24: 187b adds r3, r7, r1 - 800ce26: 781b ldrb r3, [r3, #0] - 800ce28: 3b01 subs r3, #1 - 800ce2a: b2da uxtb r2, r3 - 800ce2c: 187b adds r3, r7, r1 - 800ce2e: 701a strb r2, [r3, #0] - while( cRxLock > queueLOCKED_UNMODIFIED ) - 800ce30: 230e movs r3, #14 - 800ce32: 18fb adds r3, r7, r3 - 800ce34: 781b ldrb r3, [r3, #0] - 800ce36: b25b sxtb r3, r3 - 800ce38: 2b00 cmp r3, #0 - 800ce3a: dce5 bgt.n 800ce08 - 800ce3c: e000 b.n 800ce40 - } - else - { - break; - 800ce3e: 46c0 nop ; (mov r8, r8) - } - } - - pxQueue->cRxLock = queueUNLOCKED; - 800ce40: 687b ldr r3, [r7, #4] - 800ce42: 2244 movs r2, #68 ; 0x44 - 800ce44: 21ff movs r1, #255 ; 0xff - 800ce46: 5499 strb r1, [r3, r2] - } - taskEXIT_CRITICAL(); - 800ce48: f001 fc74 bl 800e734 -} - 800ce4c: 46c0 nop ; (mov r8, r8) - 800ce4e: 46bd mov sp, r7 - 800ce50: b004 add sp, #16 - 800ce52: bd80 pop {r7, pc} - -0800ce54 : -/*-----------------------------------------------------------*/ - -static BaseType_t prvIsQueueEmpty( const Queue_t *pxQueue ) -{ - 800ce54: b580 push {r7, lr} - 800ce56: b084 sub sp, #16 - 800ce58: af00 add r7, sp, #0 - 800ce5a: 6078 str r0, [r7, #4] -BaseType_t xReturn; - - taskENTER_CRITICAL(); - 800ce5c: f001 fc58 bl 800e710 - { - if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 ) - 800ce60: 687b ldr r3, [r7, #4] - 800ce62: 6b9b ldr r3, [r3, #56] ; 0x38 - 800ce64: 2b00 cmp r3, #0 - 800ce66: d102 bne.n 800ce6e - { - xReturn = pdTRUE; - 800ce68: 2301 movs r3, #1 - 800ce6a: 60fb str r3, [r7, #12] - 800ce6c: e001 b.n 800ce72 - } - else - { - xReturn = pdFALSE; - 800ce6e: 2300 movs r3, #0 - 800ce70: 60fb str r3, [r7, #12] - } - } - taskEXIT_CRITICAL(); - 800ce72: f001 fc5f bl 800e734 - - return xReturn; - 800ce76: 68fb ldr r3, [r7, #12] -} - 800ce78: 0018 movs r0, r3 - 800ce7a: 46bd mov sp, r7 - 800ce7c: b004 add sp, #16 - 800ce7e: bd80 pop {r7, pc} - -0800ce80 : - return xReturn; -} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */ -/*-----------------------------------------------------------*/ - -static BaseType_t prvIsQueueFull( const Queue_t *pxQueue ) -{ - 800ce80: b580 push {r7, lr} - 800ce82: b084 sub sp, #16 - 800ce84: af00 add r7, sp, #0 - 800ce86: 6078 str r0, [r7, #4] -BaseType_t xReturn; - - taskENTER_CRITICAL(); - 800ce88: f001 fc42 bl 800e710 - { - if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) - 800ce8c: 687b ldr r3, [r7, #4] - 800ce8e: 6b9a ldr r2, [r3, #56] ; 0x38 - 800ce90: 687b ldr r3, [r7, #4] - 800ce92: 6bdb ldr r3, [r3, #60] ; 0x3c - 800ce94: 429a cmp r2, r3 - 800ce96: d102 bne.n 800ce9e - { - xReturn = pdTRUE; - 800ce98: 2301 movs r3, #1 - 800ce9a: 60fb str r3, [r7, #12] - 800ce9c: e001 b.n 800cea2 - } - else - { - xReturn = pdFALSE; - 800ce9e: 2300 movs r3, #0 - 800cea0: 60fb str r3, [r7, #12] - } - } - taskEXIT_CRITICAL(); - 800cea2: f001 fc47 bl 800e734 - - return xReturn; - 800cea6: 68fb ldr r3, [r7, #12] -} - 800cea8: 0018 movs r0, r3 - 800ceaa: 46bd mov sp, r7 - 800ceac: b004 add sp, #16 - 800ceae: bd80 pop {r7, pc} - -0800ceb0 : -/*-----------------------------------------------------------*/ - -#if ( configQUEUE_REGISTRY_SIZE > 0 ) - - void vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcQueueName ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ - { - 800ceb0: b580 push {r7, lr} - 800ceb2: b084 sub sp, #16 - 800ceb4: af00 add r7, sp, #0 - 800ceb6: 6078 str r0, [r7, #4] - 800ceb8: 6039 str r1, [r7, #0] - UBaseType_t ux; - - /* See if there is an empty space in the registry. A NULL name denotes - a free slot. */ - for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ ) - 800ceba: 2300 movs r3, #0 - 800cebc: 60fb str r3, [r7, #12] - 800cebe: e015 b.n 800ceec - { - if( xQueueRegistry[ ux ].pcQueueName == NULL ) - 800cec0: 4b0e ldr r3, [pc, #56] ; (800cefc ) - 800cec2: 68fa ldr r2, [r7, #12] - 800cec4: 00d2 lsls r2, r2, #3 - 800cec6: 58d3 ldr r3, [r2, r3] - 800cec8: 2b00 cmp r3, #0 - 800ceca: d10c bne.n 800cee6 - { - /* Store the information on this queue. */ - xQueueRegistry[ ux ].pcQueueName = pcQueueName; - 800cecc: 4b0b ldr r3, [pc, #44] ; (800cefc ) - 800cece: 68fa ldr r2, [r7, #12] - 800ced0: 00d2 lsls r2, r2, #3 - 800ced2: 6839 ldr r1, [r7, #0] - 800ced4: 50d1 str r1, [r2, r3] - xQueueRegistry[ ux ].xHandle = xQueue; - 800ced6: 4a09 ldr r2, [pc, #36] ; (800cefc ) - 800ced8: 68fb ldr r3, [r7, #12] - 800ceda: 00db lsls r3, r3, #3 - 800cedc: 18d3 adds r3, r2, r3 - 800cede: 3304 adds r3, #4 - 800cee0: 687a ldr r2, [r7, #4] - 800cee2: 601a str r2, [r3, #0] - - traceQUEUE_REGISTRY_ADD( xQueue, pcQueueName ); - break; - 800cee4: e006 b.n 800cef4 - for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ ) - 800cee6: 68fb ldr r3, [r7, #12] - 800cee8: 3301 adds r3, #1 - 800ceea: 60fb str r3, [r7, #12] - 800ceec: 68fb ldr r3, [r7, #12] - 800ceee: 2b07 cmp r3, #7 - 800cef0: d9e6 bls.n 800cec0 - else - { - mtCOVERAGE_TEST_MARKER(); - } - } - } - 800cef2: 46c0 nop ; (mov r8, r8) - 800cef4: 46c0 nop ; (mov r8, r8) - 800cef6: 46bd mov sp, r7 - 800cef8: b004 add sp, #16 - 800cefa: bd80 pop {r7, pc} - 800cefc: 20000ba4 .word 0x20000ba4 - -0800cf00 : -/*-----------------------------------------------------------*/ - -#if ( configUSE_TIMERS == 1 ) - - void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) - { - 800cf00: b580 push {r7, lr} - 800cf02: b086 sub sp, #24 - 800cf04: af00 add r7, sp, #0 - 800cf06: 60f8 str r0, [r7, #12] - 800cf08: 60b9 str r1, [r7, #8] - 800cf0a: 607a str r2, [r7, #4] - Queue_t * const pxQueue = xQueue; - 800cf0c: 68fb ldr r3, [r7, #12] - 800cf0e: 617b str r3, [r7, #20] - will not actually cause the task to block, just place it on a blocked - list. It will not block until the scheduler is unlocked - at which - time a yield will be performed. If an item is added to the queue while - the queue is locked, and the calling task blocks on the queue, then the - calling task will be immediately unblocked when the queue is unlocked. */ - prvLockQueue( pxQueue ); - 800cf10: f001 fbfe bl 800e710 - 800cf14: 697b ldr r3, [r7, #20] - 800cf16: 2244 movs r2, #68 ; 0x44 - 800cf18: 5c9b ldrb r3, [r3, r2] - 800cf1a: b25b sxtb r3, r3 - 800cf1c: 3301 adds r3, #1 - 800cf1e: d103 bne.n 800cf28 - 800cf20: 697b ldr r3, [r7, #20] - 800cf22: 2244 movs r2, #68 ; 0x44 - 800cf24: 2100 movs r1, #0 - 800cf26: 5499 strb r1, [r3, r2] - 800cf28: 697b ldr r3, [r7, #20] - 800cf2a: 2245 movs r2, #69 ; 0x45 - 800cf2c: 5c9b ldrb r3, [r3, r2] - 800cf2e: b25b sxtb r3, r3 - 800cf30: 3301 adds r3, #1 - 800cf32: d103 bne.n 800cf3c - 800cf34: 697b ldr r3, [r7, #20] - 800cf36: 2245 movs r2, #69 ; 0x45 - 800cf38: 2100 movs r1, #0 - 800cf3a: 5499 strb r1, [r3, r2] - 800cf3c: f001 fbfa bl 800e734 - if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0U ) - 800cf40: 697b ldr r3, [r7, #20] - 800cf42: 6b9b ldr r3, [r3, #56] ; 0x38 - 800cf44: 2b00 cmp r3, #0 - 800cf46: d106 bne.n 800cf56 - { - /* There is nothing in the queue, block for the specified period. */ - vTaskPlaceOnEventListRestricted( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait, xWaitIndefinitely ); - 800cf48: 697b ldr r3, [r7, #20] - 800cf4a: 3324 adds r3, #36 ; 0x24 - 800cf4c: 687a ldr r2, [r7, #4] - 800cf4e: 68b9 ldr r1, [r7, #8] - 800cf50: 0018 movs r0, r3 - 800cf52: f000 fbf3 bl 800d73c - } - else - { - mtCOVERAGE_TEST_MARKER(); - } - prvUnlockQueue( pxQueue ); - 800cf56: 697b ldr r3, [r7, #20] - 800cf58: 0018 movs r0, r3 - 800cf5a: f7ff ff1d bl 800cd98 - } - 800cf5e: 46c0 nop ; (mov r8, r8) - 800cf60: 46bd mov sp, r7 - 800cf62: b006 add sp, #24 - 800cf64: bd80 pop {r7, pc} - -0800cf66 : - const uint32_t ulStackDepth, - void * const pvParameters, - UBaseType_t uxPriority, - StackType_t * const puxStackBuffer, - StaticTask_t * const pxTaskBuffer ) - { - 800cf66: b590 push {r4, r7, lr} - 800cf68: b08d sub sp, #52 ; 0x34 - 800cf6a: af04 add r7, sp, #16 - 800cf6c: 60f8 str r0, [r7, #12] - 800cf6e: 60b9 str r1, [r7, #8] - 800cf70: 607a str r2, [r7, #4] - 800cf72: 603b str r3, [r7, #0] - TCB_t *pxNewTCB; - TaskHandle_t xReturn; - - configASSERT( puxStackBuffer != NULL ); - 800cf74: 6b7b ldr r3, [r7, #52] ; 0x34 - 800cf76: 2b00 cmp r3, #0 - 800cf78: d101 bne.n 800cf7e - 800cf7a: b672 cpsid i - 800cf7c: e7fe b.n 800cf7c - configASSERT( pxTaskBuffer != NULL ); - 800cf7e: 6bbb ldr r3, [r7, #56] ; 0x38 - 800cf80: 2b00 cmp r3, #0 - 800cf82: d101 bne.n 800cf88 - 800cf84: b672 cpsid i - 800cf86: e7fe b.n 800cf86 - #if( configASSERT_DEFINED == 1 ) - { - /* Sanity check that the size of the structure used to declare a - variable of type StaticTask_t equals the size of the real task - structure. */ - volatile size_t xSize = sizeof( StaticTask_t ); - 800cf88: 23bc movs r3, #188 ; 0xbc - 800cf8a: 617b str r3, [r7, #20] - configASSERT( xSize == sizeof( TCB_t ) ); - 800cf8c: 697b ldr r3, [r7, #20] - 800cf8e: 2bbc cmp r3, #188 ; 0xbc - 800cf90: d001 beq.n 800cf96 - 800cf92: b672 cpsid i - 800cf94: e7fe b.n 800cf94 - ( void ) xSize; /* Prevent lint warning when configASSERT() is not used. */ - 800cf96: 697b ldr r3, [r7, #20] - } - #endif /* configASSERT_DEFINED */ - - - if( ( pxTaskBuffer != NULL ) && ( puxStackBuffer != NULL ) ) - 800cf98: 6bbb ldr r3, [r7, #56] ; 0x38 - 800cf9a: 2b00 cmp r3, #0 - 800cf9c: d020 beq.n 800cfe0 - 800cf9e: 6b7b ldr r3, [r7, #52] ; 0x34 - 800cfa0: 2b00 cmp r3, #0 - 800cfa2: d01d beq.n 800cfe0 - { - /* The memory used for the task's TCB and stack are passed into this - function - use them. */ - pxNewTCB = ( TCB_t * ) pxTaskBuffer; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */ - 800cfa4: 6bbb ldr r3, [r7, #56] ; 0x38 - 800cfa6: 61fb str r3, [r7, #28] - pxNewTCB->pxStack = ( StackType_t * ) puxStackBuffer; - 800cfa8: 69fb ldr r3, [r7, #28] - 800cfaa: 6b7a ldr r2, [r7, #52] ; 0x34 - 800cfac: 631a str r2, [r3, #48] ; 0x30 - - #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ - { - /* Tasks can be created statically or dynamically, so note this - task was created statically in case the task is later deleted. */ - pxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_AND_TCB; - 800cfae: 69fb ldr r3, [r7, #28] - 800cfb0: 22b9 movs r2, #185 ; 0xb9 - 800cfb2: 2102 movs r1, #2 - 800cfb4: 5499 strb r1, [r3, r2] - } - #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ - - prvInitialiseNewTask( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, &xReturn, pxNewTCB, NULL ); - 800cfb6: 683c ldr r4, [r7, #0] - 800cfb8: 687a ldr r2, [r7, #4] - 800cfba: 68b9 ldr r1, [r7, #8] - 800cfbc: 68f8 ldr r0, [r7, #12] - 800cfbe: 2300 movs r3, #0 - 800cfc0: 9303 str r3, [sp, #12] - 800cfc2: 69fb ldr r3, [r7, #28] - 800cfc4: 9302 str r3, [sp, #8] - 800cfc6: 2318 movs r3, #24 - 800cfc8: 18fb adds r3, r7, r3 - 800cfca: 9301 str r3, [sp, #4] - 800cfcc: 6b3b ldr r3, [r7, #48] ; 0x30 - 800cfce: 9300 str r3, [sp, #0] - 800cfd0: 0023 movs r3, r4 - 800cfd2: f000 f859 bl 800d088 - prvAddNewTaskToReadyList( pxNewTCB ); - 800cfd6: 69fb ldr r3, [r7, #28] - 800cfd8: 0018 movs r0, r3 - 800cfda: f000 f8f5 bl 800d1c8 - 800cfde: e001 b.n 800cfe4 - } - else - { - xReturn = NULL; - 800cfe0: 2300 movs r3, #0 - 800cfe2: 61bb str r3, [r7, #24] - } - - return xReturn; - 800cfe4: 69bb ldr r3, [r7, #24] - } - 800cfe6: 0018 movs r0, r3 - 800cfe8: 46bd mov sp, r7 - 800cfea: b009 add sp, #36 ; 0x24 - 800cfec: bd90 pop {r4, r7, pc} - -0800cfee : - const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ - const configSTACK_DEPTH_TYPE usStackDepth, - void * const pvParameters, - UBaseType_t uxPriority, - TaskHandle_t * const pxCreatedTask ) - { - 800cfee: b590 push {r4, r7, lr} - 800cff0: b08d sub sp, #52 ; 0x34 - 800cff2: af04 add r7, sp, #16 - 800cff4: 60f8 str r0, [r7, #12] - 800cff6: 60b9 str r1, [r7, #8] - 800cff8: 603b str r3, [r7, #0] - 800cffa: 1dbb adds r3, r7, #6 - 800cffc: 801a strh r2, [r3, #0] - #else /* portSTACK_GROWTH */ - { - StackType_t *pxStack; - - /* Allocate space for the stack used by the task being created. */ - pxStack = pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation is the stack. */ - 800cffe: 1dbb adds r3, r7, #6 - 800d000: 881b ldrh r3, [r3, #0] - 800d002: 009b lsls r3, r3, #2 - 800d004: 0018 movs r0, r3 - 800d006: f001 fc1b bl 800e840 - 800d00a: 0003 movs r3, r0 - 800d00c: 617b str r3, [r7, #20] - - if( pxStack != NULL ) - 800d00e: 697b ldr r3, [r7, #20] - 800d010: 2b00 cmp r3, #0 - 800d012: d010 beq.n 800d036 - { - /* Allocate space for the TCB. */ - pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of TCB_t is always a pointer to the task's stack. */ - 800d014: 20bc movs r0, #188 ; 0xbc - 800d016: f001 fc13 bl 800e840 - 800d01a: 0003 movs r3, r0 - 800d01c: 61fb str r3, [r7, #28] - - if( pxNewTCB != NULL ) - 800d01e: 69fb ldr r3, [r7, #28] - 800d020: 2b00 cmp r3, #0 - 800d022: d003 beq.n 800d02c - { - /* Store the stack location in the TCB. */ - pxNewTCB->pxStack = pxStack; - 800d024: 69fb ldr r3, [r7, #28] - 800d026: 697a ldr r2, [r7, #20] - 800d028: 631a str r2, [r3, #48] ; 0x30 - 800d02a: e006 b.n 800d03a - } - else - { - /* The stack cannot be used as the TCB was not created. Free - it again. */ - vPortFree( pxStack ); - 800d02c: 697b ldr r3, [r7, #20] - 800d02e: 0018 movs r0, r3 - 800d030: f001 fcb2 bl 800e998 - 800d034: e001 b.n 800d03a - } - } - else - { - pxNewTCB = NULL; - 800d036: 2300 movs r3, #0 - 800d038: 61fb str r3, [r7, #28] - } - } - #endif /* portSTACK_GROWTH */ - - if( pxNewTCB != NULL ) - 800d03a: 69fb ldr r3, [r7, #28] - 800d03c: 2b00 cmp r3, #0 - 800d03e: d01a beq.n 800d076 - { - #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e9029 !e731 Macro has been consolidated for readability reasons. */ - { - /* Tasks can be created statically or dynamically, so note this - task was created dynamically in case it is later deleted. */ - pxNewTCB->ucStaticallyAllocated = tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB; - 800d040: 69fb ldr r3, [r7, #28] - 800d042: 22b9 movs r2, #185 ; 0xb9 - 800d044: 2100 movs r1, #0 - 800d046: 5499 strb r1, [r3, r2] - } - #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ - - prvInitialiseNewTask( pxTaskCode, pcName, ( uint32_t ) usStackDepth, pvParameters, uxPriority, pxCreatedTask, pxNewTCB, NULL ); - 800d048: 1dbb adds r3, r7, #6 - 800d04a: 881a ldrh r2, [r3, #0] - 800d04c: 683c ldr r4, [r7, #0] - 800d04e: 68b9 ldr r1, [r7, #8] - 800d050: 68f8 ldr r0, [r7, #12] - 800d052: 2300 movs r3, #0 - 800d054: 9303 str r3, [sp, #12] - 800d056: 69fb ldr r3, [r7, #28] - 800d058: 9302 str r3, [sp, #8] - 800d05a: 6b7b ldr r3, [r7, #52] ; 0x34 - 800d05c: 9301 str r3, [sp, #4] - 800d05e: 6b3b ldr r3, [r7, #48] ; 0x30 - 800d060: 9300 str r3, [sp, #0] - 800d062: 0023 movs r3, r4 - 800d064: f000 f810 bl 800d088 - prvAddNewTaskToReadyList( pxNewTCB ); - 800d068: 69fb ldr r3, [r7, #28] - 800d06a: 0018 movs r0, r3 - 800d06c: f000 f8ac bl 800d1c8 - xReturn = pdPASS; - 800d070: 2301 movs r3, #1 - 800d072: 61bb str r3, [r7, #24] - 800d074: e002 b.n 800d07c - } - else - { - xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; - 800d076: 2301 movs r3, #1 - 800d078: 425b negs r3, r3 - 800d07a: 61bb str r3, [r7, #24] - } - - return xReturn; - 800d07c: 69bb ldr r3, [r7, #24] - } - 800d07e: 0018 movs r0, r3 - 800d080: 46bd mov sp, r7 - 800d082: b009 add sp, #36 ; 0x24 - 800d084: bd90 pop {r4, r7, pc} - ... - -0800d088 : - void * const pvParameters, - UBaseType_t uxPriority, - TaskHandle_t * const pxCreatedTask, - TCB_t *pxNewTCB, - const MemoryRegion_t * const xRegions ) -{ - 800d088: b580 push {r7, lr} - 800d08a: b086 sub sp, #24 - 800d08c: af00 add r7, sp, #0 - 800d08e: 60f8 str r0, [r7, #12] - 800d090: 60b9 str r1, [r7, #8] - 800d092: 607a str r2, [r7, #4] - 800d094: 603b str r3, [r7, #0] - - /* Avoid dependency on memset() if it is not required. */ - #if( tskSET_NEW_STACKS_TO_KNOWN_VALUE == 1 ) - { - /* Fill the stack with a known value to assist debugging. */ - ( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) ulStackDepth * sizeof( StackType_t ) ); - 800d096: 6abb ldr r3, [r7, #40] ; 0x28 - 800d098: 6b18 ldr r0, [r3, #48] ; 0x30 - 800d09a: 687b ldr r3, [r7, #4] - 800d09c: 009b lsls r3, r3, #2 - 800d09e: 001a movs r2, r3 - 800d0a0: 21a5 movs r1, #165 ; 0xa5 - 800d0a2: f001 fdb4 bl 800ec0e - grows from high memory to low (as per the 80x86) or vice versa. - portSTACK_GROWTH is used to make the result positive or negative as required - by the port. */ - #if( portSTACK_GROWTH < 0 ) - { - pxTopOfStack = &( pxNewTCB->pxStack[ ulStackDepth - ( uint32_t ) 1 ] ); - 800d0a6: 6abb ldr r3, [r7, #40] ; 0x28 - 800d0a8: 6b1a ldr r2, [r3, #48] ; 0x30 - 800d0aa: 687b ldr r3, [r7, #4] - 800d0ac: 4942 ldr r1, [pc, #264] ; (800d1b8 ) - 800d0ae: 468c mov ip, r1 - 800d0b0: 4463 add r3, ip - 800d0b2: 009b lsls r3, r3, #2 - 800d0b4: 18d3 adds r3, r2, r3 - 800d0b6: 613b str r3, [r7, #16] - pxTopOfStack = ( StackType_t * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) ); /*lint !e923 !e9033 !e9078 MISRA exception. Avoiding casts between pointers and integers is not practical. Size differences accounted for using portPOINTER_SIZE_TYPE type. Checked by assert(). */ - 800d0b8: 693b ldr r3, [r7, #16] - 800d0ba: 2207 movs r2, #7 - 800d0bc: 4393 bics r3, r2 - 800d0be: 613b str r3, [r7, #16] - - /* Check the alignment of the calculated top of stack is correct. */ - configASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0UL ) ); - 800d0c0: 693b ldr r3, [r7, #16] - 800d0c2: 2207 movs r2, #7 - 800d0c4: 4013 ands r3, r2 - 800d0c6: d001 beq.n 800d0cc - 800d0c8: b672 cpsid i - 800d0ca: e7fe b.n 800d0ca - pxNewTCB->pxEndOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 ); - } - #endif /* portSTACK_GROWTH */ - - /* Store the task name in the TCB. */ - if( pcName != NULL ) - 800d0cc: 68bb ldr r3, [r7, #8] - 800d0ce: 2b00 cmp r3, #0 - 800d0d0: d020 beq.n 800d114 - { - for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) - 800d0d2: 2300 movs r3, #0 - 800d0d4: 617b str r3, [r7, #20] - 800d0d6: e013 b.n 800d100 - { - pxNewTCB->pcTaskName[ x ] = pcName[ x ]; - 800d0d8: 68ba ldr r2, [r7, #8] - 800d0da: 697b ldr r3, [r7, #20] - 800d0dc: 18d3 adds r3, r2, r3 - 800d0de: 7818 ldrb r0, [r3, #0] - 800d0e0: 6aba ldr r2, [r7, #40] ; 0x28 - 800d0e2: 2134 movs r1, #52 ; 0x34 - 800d0e4: 697b ldr r3, [r7, #20] - 800d0e6: 18d3 adds r3, r2, r3 - 800d0e8: 185b adds r3, r3, r1 - 800d0ea: 1c02 adds r2, r0, #0 - 800d0ec: 701a strb r2, [r3, #0] - - /* Don't copy all configMAX_TASK_NAME_LEN if the string is shorter than - configMAX_TASK_NAME_LEN characters just in case the memory after the - string is not accessible (extremely unlikely). */ - if( pcName[ x ] == ( char ) 0x00 ) - 800d0ee: 68ba ldr r2, [r7, #8] - 800d0f0: 697b ldr r3, [r7, #20] - 800d0f2: 18d3 adds r3, r2, r3 - 800d0f4: 781b ldrb r3, [r3, #0] - 800d0f6: 2b00 cmp r3, #0 - 800d0f8: d006 beq.n 800d108 - for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) - 800d0fa: 697b ldr r3, [r7, #20] - 800d0fc: 3301 adds r3, #1 - 800d0fe: 617b str r3, [r7, #20] - 800d100: 697b ldr r3, [r7, #20] - 800d102: 2b0f cmp r3, #15 - 800d104: d9e8 bls.n 800d0d8 - 800d106: e000 b.n 800d10a - { - break; - 800d108: 46c0 nop ; (mov r8, r8) - } - } - - /* Ensure the name string is terminated in the case that the string length - was greater or equal to configMAX_TASK_NAME_LEN. */ - pxNewTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = '\0'; - 800d10a: 6abb ldr r3, [r7, #40] ; 0x28 - 800d10c: 2243 movs r2, #67 ; 0x43 - 800d10e: 2100 movs r1, #0 - 800d110: 5499 strb r1, [r3, r2] - 800d112: e003 b.n 800d11c - } - else - { - /* The task has not been given a name, so just ensure there is a NULL - terminator when it is read out. */ - pxNewTCB->pcTaskName[ 0 ] = 0x00; - 800d114: 6abb ldr r3, [r7, #40] ; 0x28 - 800d116: 2234 movs r2, #52 ; 0x34 - 800d118: 2100 movs r1, #0 - 800d11a: 5499 strb r1, [r3, r2] - } - - /* This is used as an array index so must ensure it's not too large. First - remove the privilege bit if one is present. */ - if( uxPriority >= ( UBaseType_t ) configMAX_PRIORITIES ) - 800d11c: 6a3b ldr r3, [r7, #32] - 800d11e: 2b37 cmp r3, #55 ; 0x37 - 800d120: d901 bls.n 800d126 - { - uxPriority = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) 1U; - 800d122: 2337 movs r3, #55 ; 0x37 - 800d124: 623b str r3, [r7, #32] - else - { - mtCOVERAGE_TEST_MARKER(); - } - - pxNewTCB->uxPriority = uxPriority; - 800d126: 6abb ldr r3, [r7, #40] ; 0x28 - 800d128: 6a3a ldr r2, [r7, #32] - 800d12a: 62da str r2, [r3, #44] ; 0x2c - #if ( configUSE_MUTEXES == 1 ) - { - pxNewTCB->uxBasePriority = uxPriority; - 800d12c: 6abb ldr r3, [r7, #40] ; 0x28 - 800d12e: 6a3a ldr r2, [r7, #32] - 800d130: 64da str r2, [r3, #76] ; 0x4c - pxNewTCB->uxMutexesHeld = 0; - 800d132: 6abb ldr r3, [r7, #40] ; 0x28 - 800d134: 2200 movs r2, #0 - 800d136: 651a str r2, [r3, #80] ; 0x50 - } - #endif /* configUSE_MUTEXES */ - - vListInitialiseItem( &( pxNewTCB->xStateListItem ) ); - 800d138: 6abb ldr r3, [r7, #40] ; 0x28 - 800d13a: 3304 adds r3, #4 - 800d13c: 0018 movs r0, r3 - 800d13e: f7fe fffd bl 800c13c - vListInitialiseItem( &( pxNewTCB->xEventListItem ) ); - 800d142: 6abb ldr r3, [r7, #40] ; 0x28 - 800d144: 3318 adds r3, #24 - 800d146: 0018 movs r0, r3 - 800d148: f7fe fff8 bl 800c13c - - /* Set the pxNewTCB as a link back from the ListItem_t. This is so we can get - back to the containing TCB from a generic item in a list. */ - listSET_LIST_ITEM_OWNER( &( pxNewTCB->xStateListItem ), pxNewTCB ); - 800d14c: 6abb ldr r3, [r7, #40] ; 0x28 - 800d14e: 6aba ldr r2, [r7, #40] ; 0x28 - 800d150: 611a str r2, [r3, #16] - - /* Event lists are always in priority order. */ - listSET_LIST_ITEM_VALUE( &( pxNewTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 800d152: 6a3b ldr r3, [r7, #32] - 800d154: 2238 movs r2, #56 ; 0x38 - 800d156: 1ad2 subs r2, r2, r3 - 800d158: 6abb ldr r3, [r7, #40] ; 0x28 - 800d15a: 619a str r2, [r3, #24] - listSET_LIST_ITEM_OWNER( &( pxNewTCB->xEventListItem ), pxNewTCB ); - 800d15c: 6abb ldr r3, [r7, #40] ; 0x28 - 800d15e: 6aba ldr r2, [r7, #40] ; 0x28 - 800d160: 625a str r2, [r3, #36] ; 0x24 - } - #endif - - #if ( configUSE_TASK_NOTIFICATIONS == 1 ) - { - pxNewTCB->ulNotifiedValue = 0; - 800d162: 6abb ldr r3, [r7, #40] ; 0x28 - 800d164: 22b4 movs r2, #180 ; 0xb4 - 800d166: 2100 movs r1, #0 - 800d168: 5099 str r1, [r3, r2] - pxNewTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; - 800d16a: 6abb ldr r3, [r7, #40] ; 0x28 - 800d16c: 22b8 movs r2, #184 ; 0xb8 - 800d16e: 2100 movs r1, #0 - 800d170: 5499 strb r1, [r3, r2] - #if ( configUSE_NEWLIB_REENTRANT == 1 ) - { - /* Initialise this task's Newlib reent structure. - See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html - for additional information. */ - _REENT_INIT_PTR( ( &( pxNewTCB->xNewLib_reent ) ) ); - 800d172: 6abb ldr r3, [r7, #40] ; 0x28 - 800d174: 3354 adds r3, #84 ; 0x54 - 800d176: 2260 movs r2, #96 ; 0x60 - 800d178: 2100 movs r1, #0 - 800d17a: 0018 movs r0, r3 - 800d17c: f001 fd47 bl 800ec0e - 800d180: 6abb ldr r3, [r7, #40] ; 0x28 - 800d182: 4a0e ldr r2, [pc, #56] ; (800d1bc ) - 800d184: 659a str r2, [r3, #88] ; 0x58 - 800d186: 6abb ldr r3, [r7, #40] ; 0x28 - 800d188: 4a0d ldr r2, [pc, #52] ; (800d1c0 ) - 800d18a: 65da str r2, [r3, #92] ; 0x5c - 800d18c: 6abb ldr r3, [r7, #40] ; 0x28 - 800d18e: 4a0d ldr r2, [pc, #52] ; (800d1c4 ) - 800d190: 661a str r2, [r3, #96] ; 0x60 - } - #endif /* portSTACK_GROWTH */ - } - #else /* portHAS_STACK_OVERFLOW_CHECKING */ - { - pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters ); - 800d192: 683a ldr r2, [r7, #0] - 800d194: 68f9 ldr r1, [r7, #12] - 800d196: 693b ldr r3, [r7, #16] - 800d198: 0018 movs r0, r3 - 800d19a: f001 fa1d bl 800e5d8 - 800d19e: 0002 movs r2, r0 - 800d1a0: 6abb ldr r3, [r7, #40] ; 0x28 - 800d1a2: 601a str r2, [r3, #0] - } - #endif /* portHAS_STACK_OVERFLOW_CHECKING */ - } - #endif /* portUSING_MPU_WRAPPERS */ - - if( pxCreatedTask != NULL ) - 800d1a4: 6a7b ldr r3, [r7, #36] ; 0x24 - 800d1a6: 2b00 cmp r3, #0 - 800d1a8: d002 beq.n 800d1b0 - { - /* Pass the handle out in an anonymous way. The handle can be used to - change the created task's priority, delete the created task, etc.*/ - *pxCreatedTask = ( TaskHandle_t ) pxNewTCB; - 800d1aa: 6a7b ldr r3, [r7, #36] ; 0x24 - 800d1ac: 6aba ldr r2, [r7, #40] ; 0x28 - 800d1ae: 601a str r2, [r3, #0] - } - else - { - mtCOVERAGE_TEST_MARKER(); - } -} - 800d1b0: 46c0 nop ; (mov r8, r8) - 800d1b2: 46bd mov sp, r7 - 800d1b4: b006 add sp, #24 - 800d1b6: bd80 pop {r7, pc} - 800d1b8: 3fffffff .word 0x3fffffff - 800d1bc: 08010fa4 .word 0x08010fa4 - 800d1c0: 08010fc4 .word 0x08010fc4 - 800d1c4: 08010f84 .word 0x08010f84 - -0800d1c8 : -/*-----------------------------------------------------------*/ - -static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) -{ - 800d1c8: b580 push {r7, lr} - 800d1ca: b082 sub sp, #8 - 800d1cc: af00 add r7, sp, #0 - 800d1ce: 6078 str r0, [r7, #4] - /* Ensure interrupts don't access the task lists while the lists are being - updated. */ - taskENTER_CRITICAL(); - 800d1d0: f001 fa9e bl 800e710 - { - uxCurrentNumberOfTasks++; - 800d1d4: 4b2a ldr r3, [pc, #168] ; (800d280 ) - 800d1d6: 681b ldr r3, [r3, #0] - 800d1d8: 1c5a adds r2, r3, #1 - 800d1da: 4b29 ldr r3, [pc, #164] ; (800d280 ) - 800d1dc: 601a str r2, [r3, #0] - if( pxCurrentTCB == NULL ) - 800d1de: 4b29 ldr r3, [pc, #164] ; (800d284 ) - 800d1e0: 681b ldr r3, [r3, #0] - 800d1e2: 2b00 cmp r3, #0 - 800d1e4: d109 bne.n 800d1fa - { - /* There are no other tasks, or all the other tasks are in - the suspended state - make this the current task. */ - pxCurrentTCB = pxNewTCB; - 800d1e6: 4b27 ldr r3, [pc, #156] ; (800d284 ) - 800d1e8: 687a ldr r2, [r7, #4] - 800d1ea: 601a str r2, [r3, #0] - - if( uxCurrentNumberOfTasks == ( UBaseType_t ) 1 ) - 800d1ec: 4b24 ldr r3, [pc, #144] ; (800d280 ) - 800d1ee: 681b ldr r3, [r3, #0] - 800d1f0: 2b01 cmp r3, #1 - 800d1f2: d110 bne.n 800d216 - { - /* This is the first task to be created so do the preliminary - initialisation required. We will not recover if this call - fails, but we will report the failure. */ - prvInitialiseTaskLists(); - 800d1f4: f000 fba2 bl 800d93c - 800d1f8: e00d b.n 800d216 - else - { - /* If the scheduler is not already running, make this task the - current task if it is the highest priority task to be created - so far. */ - if( xSchedulerRunning == pdFALSE ) - 800d1fa: 4b23 ldr r3, [pc, #140] ; (800d288 ) - 800d1fc: 681b ldr r3, [r3, #0] - 800d1fe: 2b00 cmp r3, #0 - 800d200: d109 bne.n 800d216 - { - if( pxCurrentTCB->uxPriority <= pxNewTCB->uxPriority ) - 800d202: 4b20 ldr r3, [pc, #128] ; (800d284 ) - 800d204: 681b ldr r3, [r3, #0] - 800d206: 6ada ldr r2, [r3, #44] ; 0x2c - 800d208: 687b ldr r3, [r7, #4] - 800d20a: 6adb ldr r3, [r3, #44] ; 0x2c - 800d20c: 429a cmp r2, r3 - 800d20e: d802 bhi.n 800d216 - { - pxCurrentTCB = pxNewTCB; - 800d210: 4b1c ldr r3, [pc, #112] ; (800d284 ) - 800d212: 687a ldr r2, [r7, #4] - 800d214: 601a str r2, [r3, #0] - { - mtCOVERAGE_TEST_MARKER(); - } - } - - uxTaskNumber++; - 800d216: 4b1d ldr r3, [pc, #116] ; (800d28c ) - 800d218: 681b ldr r3, [r3, #0] - 800d21a: 1c5a adds r2, r3, #1 - 800d21c: 4b1b ldr r3, [pc, #108] ; (800d28c ) - 800d21e: 601a str r2, [r3, #0] - - #if ( configUSE_TRACE_FACILITY == 1 ) - { - /* Add a counter into the TCB for tracing only. */ - pxNewTCB->uxTCBNumber = uxTaskNumber; - 800d220: 4b1a ldr r3, [pc, #104] ; (800d28c ) - 800d222: 681a ldr r2, [r3, #0] - 800d224: 687b ldr r3, [r7, #4] - 800d226: 645a str r2, [r3, #68] ; 0x44 - } - #endif /* configUSE_TRACE_FACILITY */ - traceTASK_CREATE( pxNewTCB ); - - prvAddTaskToReadyList( pxNewTCB ); - 800d228: 687b ldr r3, [r7, #4] - 800d22a: 6ada ldr r2, [r3, #44] ; 0x2c - 800d22c: 4b18 ldr r3, [pc, #96] ; (800d290 ) - 800d22e: 681b ldr r3, [r3, #0] - 800d230: 429a cmp r2, r3 - 800d232: d903 bls.n 800d23c - 800d234: 687b ldr r3, [r7, #4] - 800d236: 6ada ldr r2, [r3, #44] ; 0x2c - 800d238: 4b15 ldr r3, [pc, #84] ; (800d290 ) - 800d23a: 601a str r2, [r3, #0] - 800d23c: 687b ldr r3, [r7, #4] - 800d23e: 6ada ldr r2, [r3, #44] ; 0x2c - 800d240: 0013 movs r3, r2 - 800d242: 009b lsls r3, r3, #2 - 800d244: 189b adds r3, r3, r2 - 800d246: 009b lsls r3, r3, #2 - 800d248: 4a12 ldr r2, [pc, #72] ; (800d294 ) - 800d24a: 189a adds r2, r3, r2 - 800d24c: 687b ldr r3, [r7, #4] - 800d24e: 3304 adds r3, #4 - 800d250: 0019 movs r1, r3 - 800d252: 0010 movs r0, r2 - 800d254: f7fe ff7d bl 800c152 - - portSETUP_TCB( pxNewTCB ); - } - taskEXIT_CRITICAL(); - 800d258: f001 fa6c bl 800e734 - - if( xSchedulerRunning != pdFALSE ) - 800d25c: 4b0a ldr r3, [pc, #40] ; (800d288 ) - 800d25e: 681b ldr r3, [r3, #0] - 800d260: 2b00 cmp r3, #0 - 800d262: d008 beq.n 800d276 - { - /* If the created task is of a higher priority than the current task - then it should run now. */ - if( pxCurrentTCB->uxPriority < pxNewTCB->uxPriority ) - 800d264: 4b07 ldr r3, [pc, #28] ; (800d284 ) - 800d266: 681b ldr r3, [r3, #0] - 800d268: 6ada ldr r2, [r3, #44] ; 0x2c - 800d26a: 687b ldr r3, [r7, #4] - 800d26c: 6adb ldr r3, [r3, #44] ; 0x2c - 800d26e: 429a cmp r2, r3 - 800d270: d201 bcs.n 800d276 - { - taskYIELD_IF_USING_PREEMPTION(); - 800d272: f001 fa3d bl 800e6f0 - } - else - { - mtCOVERAGE_TEST_MARKER(); - } -} - 800d276: 46c0 nop ; (mov r8, r8) - 800d278: 46bd mov sp, r7 - 800d27a: b002 add sp, #8 - 800d27c: bd80 pop {r7, pc} - 800d27e: 46c0 nop ; (mov r8, r8) - 800d280: 200010b8 .word 0x200010b8 - 800d284: 20000be4 .word 0x20000be4 - 800d288: 200010c4 .word 0x200010c4 - 800d28c: 200010d4 .word 0x200010d4 - 800d290: 200010c0 .word 0x200010c0 - 800d294: 20000be8 .word 0x20000be8 - -0800d298 : -/*-----------------------------------------------------------*/ - -#if ( INCLUDE_vTaskDelay == 1 ) - - void vTaskDelay( const TickType_t xTicksToDelay ) - { - 800d298: b580 push {r7, lr} - 800d29a: b084 sub sp, #16 - 800d29c: af00 add r7, sp, #0 - 800d29e: 6078 str r0, [r7, #4] - BaseType_t xAlreadyYielded = pdFALSE; - 800d2a0: 2300 movs r3, #0 - 800d2a2: 60fb str r3, [r7, #12] - - /* A delay time of zero just forces a reschedule. */ - if( xTicksToDelay > ( TickType_t ) 0U ) - 800d2a4: 687b ldr r3, [r7, #4] - 800d2a6: 2b00 cmp r3, #0 - 800d2a8: d010 beq.n 800d2cc - { - configASSERT( uxSchedulerSuspended == 0 ); - 800d2aa: 4b0d ldr r3, [pc, #52] ; (800d2e0 ) - 800d2ac: 681b ldr r3, [r3, #0] - 800d2ae: 2b00 cmp r3, #0 - 800d2b0: d001 beq.n 800d2b6 - 800d2b2: b672 cpsid i - 800d2b4: e7fe b.n 800d2b4 - vTaskSuspendAll(); - 800d2b6: f000 f873 bl 800d3a0 - list or removed from the blocked list until the scheduler - is resumed. - - This task cannot be in an event list as it is the currently - executing task. */ - prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE ); - 800d2ba: 687b ldr r3, [r7, #4] - 800d2bc: 2100 movs r1, #0 - 800d2be: 0018 movs r0, r3 - 800d2c0: f000 fd6a bl 800dd98 - } - xAlreadyYielded = xTaskResumeAll(); - 800d2c4: f000 f878 bl 800d3b8 - 800d2c8: 0003 movs r3, r0 - 800d2ca: 60fb str r3, [r7, #12] - mtCOVERAGE_TEST_MARKER(); - } - - /* Force a reschedule if xTaskResumeAll has not already done so, we may - have put ourselves to sleep. */ - if( xAlreadyYielded == pdFALSE ) - 800d2cc: 68fb ldr r3, [r7, #12] - 800d2ce: 2b00 cmp r3, #0 - 800d2d0: d101 bne.n 800d2d6 - { - portYIELD_WITHIN_API(); - 800d2d2: f001 fa0d bl 800e6f0 - } - else - { - mtCOVERAGE_TEST_MARKER(); - } - } - 800d2d6: 46c0 nop ; (mov r8, r8) - 800d2d8: 46bd mov sp, r7 - 800d2da: b004 add sp, #16 - 800d2dc: bd80 pop {r7, pc} - 800d2de: 46c0 nop ; (mov r8, r8) - 800d2e0: 200010e0 .word 0x200010e0 - -0800d2e4 : - -#endif /* ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) */ -/*-----------------------------------------------------------*/ - -void vTaskStartScheduler( void ) -{ - 800d2e4: b590 push {r4, r7, lr} - 800d2e6: b089 sub sp, #36 ; 0x24 - 800d2e8: af04 add r7, sp, #16 -BaseType_t xReturn; - - /* Add the idle task at the lowest priority. */ - #if( configSUPPORT_STATIC_ALLOCATION == 1 ) - { - StaticTask_t *pxIdleTaskTCBBuffer = NULL; - 800d2ea: 2300 movs r3, #0 - 800d2ec: 60bb str r3, [r7, #8] - StackType_t *pxIdleTaskStackBuffer = NULL; - 800d2ee: 2300 movs r3, #0 - 800d2f0: 607b str r3, [r7, #4] - uint32_t ulIdleTaskStackSize; - - /* The Idle task is created using user provided RAM - obtain the - address of the RAM then create the idle task. */ - vApplicationGetIdleTaskMemory( &pxIdleTaskTCBBuffer, &pxIdleTaskStackBuffer, &ulIdleTaskStackSize ); - 800d2f2: 003a movs r2, r7 - 800d2f4: 1d39 adds r1, r7, #4 - 800d2f6: 2308 movs r3, #8 - 800d2f8: 18fb adds r3, r7, r3 - 800d2fa: 0018 movs r0, r3 - 800d2fc: f7fe fed0 bl 800c0a0 - xIdleTaskHandle = xTaskCreateStatic( prvIdleTask, - 800d300: 683c ldr r4, [r7, #0] - 800d302: 687b ldr r3, [r7, #4] - 800d304: 68ba ldr r2, [r7, #8] - 800d306: 491e ldr r1, [pc, #120] ; (800d380 ) - 800d308: 481e ldr r0, [pc, #120] ; (800d384 ) - 800d30a: 9202 str r2, [sp, #8] - 800d30c: 9301 str r3, [sp, #4] - 800d30e: 2300 movs r3, #0 - 800d310: 9300 str r3, [sp, #0] - 800d312: 2300 movs r3, #0 - 800d314: 0022 movs r2, r4 - 800d316: f7ff fe26 bl 800cf66 - 800d31a: 0002 movs r2, r0 - 800d31c: 4b1a ldr r3, [pc, #104] ; (800d388 ) - 800d31e: 601a str r2, [r3, #0] - ( void * ) NULL, /*lint !e961. The cast is not redundant for all compilers. */ - portPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */ - pxIdleTaskStackBuffer, - pxIdleTaskTCBBuffer ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */ - - if( xIdleTaskHandle != NULL ) - 800d320: 4b19 ldr r3, [pc, #100] ; (800d388 ) - 800d322: 681b ldr r3, [r3, #0] - 800d324: 2b00 cmp r3, #0 - 800d326: d002 beq.n 800d32e - { - xReturn = pdPASS; - 800d328: 2301 movs r3, #1 - 800d32a: 60fb str r3, [r7, #12] - 800d32c: e001 b.n 800d332 - } - else - { - xReturn = pdFAIL; - 800d32e: 2300 movs r3, #0 - 800d330: 60fb str r3, [r7, #12] - } - #endif /* configSUPPORT_STATIC_ALLOCATION */ - - #if ( configUSE_TIMERS == 1 ) - { - if( xReturn == pdPASS ) - 800d332: 68fb ldr r3, [r7, #12] - 800d334: 2b01 cmp r3, #1 - 800d336: d103 bne.n 800d340 - { - xReturn = xTimerCreateTimerTask(); - 800d338: f000 fd82 bl 800de40 - 800d33c: 0003 movs r3, r0 - 800d33e: 60fb str r3, [r7, #12] - mtCOVERAGE_TEST_MARKER(); - } - } - #endif /* configUSE_TIMERS */ - - if( xReturn == pdPASS ) - 800d340: 68fb ldr r3, [r7, #12] - 800d342: 2b01 cmp r3, #1 - 800d344: d113 bne.n 800d36e - /* Interrupts are turned off here, to ensure a tick does not occur - before or during the call to xPortStartScheduler(). The stacks of - the created tasks contain a status word with interrupts switched on - so interrupts will automatically get re-enabled when the first task - starts to run. */ - portDISABLE_INTERRUPTS(); - 800d346: b672 cpsid i - { - /* Switch Newlib's _impure_ptr variable to point to the _reent - structure specific to the task that will run first. - See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html - for additional information. */ - _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); - 800d348: 4b10 ldr r3, [pc, #64] ; (800d38c ) - 800d34a: 681b ldr r3, [r3, #0] - 800d34c: 3354 adds r3, #84 ; 0x54 - 800d34e: 001a movs r2, r3 - 800d350: 4b0f ldr r3, [pc, #60] ; (800d390 ) - 800d352: 601a str r2, [r3, #0] - } - #endif /* configUSE_NEWLIB_REENTRANT */ - - xNextTaskUnblockTime = portMAX_DELAY; - 800d354: 4b0f ldr r3, [pc, #60] ; (800d394 ) - 800d356: 2201 movs r2, #1 - 800d358: 4252 negs r2, r2 - 800d35a: 601a str r2, [r3, #0] - xSchedulerRunning = pdTRUE; - 800d35c: 4b0e ldr r3, [pc, #56] ; (800d398 ) - 800d35e: 2201 movs r2, #1 - 800d360: 601a str r2, [r3, #0] - xTickCount = ( TickType_t ) configINITIAL_TICK_COUNT; - 800d362: 4b0e ldr r3, [pc, #56] ; (800d39c ) - 800d364: 2200 movs r2, #0 - 800d366: 601a str r2, [r3, #0] - - traceTASK_SWITCHED_IN(); - - /* Setting up the timer tick is hardware specific and thus in the - portable interface. */ - if( xPortStartScheduler() != pdFALSE ) - 800d368: f001 f99e bl 800e6a8 - } - - /* Prevent compiler warnings if INCLUDE_xTaskGetIdleTaskHandle is set to 0, - meaning xIdleTaskHandle is not used anywhere else. */ - ( void ) xIdleTaskHandle; -} - 800d36c: e004 b.n 800d378 - configASSERT( xReturn != errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ); - 800d36e: 68fb ldr r3, [r7, #12] - 800d370: 3301 adds r3, #1 - 800d372: d101 bne.n 800d378 - 800d374: b672 cpsid i - 800d376: e7fe b.n 800d376 -} - 800d378: 46c0 nop ; (mov r8, r8) - 800d37a: 46bd mov sp, r7 - 800d37c: b005 add sp, #20 - 800d37e: bd90 pop {r4, r7, pc} - 800d380: 0800f794 .word 0x0800f794 - 800d384: 0800d91d .word 0x0800d91d - 800d388: 200010dc .word 0x200010dc - 800d38c: 20000be4 .word 0x20000be4 - 800d390: 20000050 .word 0x20000050 - 800d394: 200010d8 .word 0x200010d8 - 800d398: 200010c4 .word 0x200010c4 - 800d39c: 200010bc .word 0x200010bc - -0800d3a0 : - vPortEndScheduler(); -} -/*----------------------------------------------------------*/ - -void vTaskSuspendAll( void ) -{ - 800d3a0: b580 push {r7, lr} - 800d3a2: af00 add r7, sp, #0 - do not otherwise exhibit real time behaviour. */ - portSOFTWARE_BARRIER(); - - /* The scheduler is suspended if uxSchedulerSuspended is non-zero. An increment - is used to allow calls to vTaskSuspendAll() to nest. */ - ++uxSchedulerSuspended; - 800d3a4: 4b03 ldr r3, [pc, #12] ; (800d3b4 ) - 800d3a6: 681b ldr r3, [r3, #0] - 800d3a8: 1c5a adds r2, r3, #1 - 800d3aa: 4b02 ldr r3, [pc, #8] ; (800d3b4 ) - 800d3ac: 601a str r2, [r3, #0] - - /* Enforces ordering for ports and optimised compilers that may otherwise place - the above increment elsewhere. */ - portMEMORY_BARRIER(); -} - 800d3ae: 46c0 nop ; (mov r8, r8) - 800d3b0: 46bd mov sp, r7 - 800d3b2: bd80 pop {r7, pc} - 800d3b4: 200010e0 .word 0x200010e0 - -0800d3b8 : - -#endif /* configUSE_TICKLESS_IDLE */ -/*----------------------------------------------------------*/ - -BaseType_t xTaskResumeAll( void ) -{ - 800d3b8: b580 push {r7, lr} - 800d3ba: b084 sub sp, #16 - 800d3bc: af00 add r7, sp, #0 -TCB_t *pxTCB = NULL; - 800d3be: 2300 movs r3, #0 - 800d3c0: 60fb str r3, [r7, #12] -BaseType_t xAlreadyYielded = pdFALSE; - 800d3c2: 2300 movs r3, #0 - 800d3c4: 60bb str r3, [r7, #8] - - /* If uxSchedulerSuspended is zero then this function does not match a - previous call to vTaskSuspendAll(). */ - configASSERT( uxSchedulerSuspended ); - 800d3c6: 4b3a ldr r3, [pc, #232] ; (800d4b0 ) - 800d3c8: 681b ldr r3, [r3, #0] - 800d3ca: 2b00 cmp r3, #0 - 800d3cc: d101 bne.n 800d3d2 - 800d3ce: b672 cpsid i - 800d3d0: e7fe b.n 800d3d0 - /* It is possible that an ISR caused a task to be removed from an event - list while the scheduler was suspended. If this was the case then the - removed task will have been added to the xPendingReadyList. Once the - scheduler has been resumed it is safe to move all the pending ready - tasks from this list into their appropriate ready list. */ - taskENTER_CRITICAL(); - 800d3d2: f001 f99d bl 800e710 - { - --uxSchedulerSuspended; - 800d3d6: 4b36 ldr r3, [pc, #216] ; (800d4b0 ) - 800d3d8: 681b ldr r3, [r3, #0] - 800d3da: 1e5a subs r2, r3, #1 - 800d3dc: 4b34 ldr r3, [pc, #208] ; (800d4b0 ) - 800d3de: 601a str r2, [r3, #0] - - if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 800d3e0: 4b33 ldr r3, [pc, #204] ; (800d4b0 ) - 800d3e2: 681b ldr r3, [r3, #0] - 800d3e4: 2b00 cmp r3, #0 - 800d3e6: d15b bne.n 800d4a0 - { - if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U ) - 800d3e8: 4b32 ldr r3, [pc, #200] ; (800d4b4 ) - 800d3ea: 681b ldr r3, [r3, #0] - 800d3ec: 2b00 cmp r3, #0 - 800d3ee: d057 beq.n 800d4a0 - { - /* Move any readied tasks from the pending list into the - appropriate ready list. */ - while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) - 800d3f0: e02f b.n 800d452 - { - pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800d3f2: 4b31 ldr r3, [pc, #196] ; (800d4b8 ) - 800d3f4: 68db ldr r3, [r3, #12] - 800d3f6: 68db ldr r3, [r3, #12] - 800d3f8: 60fb str r3, [r7, #12] - ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); - 800d3fa: 68fb ldr r3, [r7, #12] - 800d3fc: 3318 adds r3, #24 - 800d3fe: 0018 movs r0, r3 - 800d400: f7fe feff bl 800c202 - ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 800d404: 68fb ldr r3, [r7, #12] - 800d406: 3304 adds r3, #4 - 800d408: 0018 movs r0, r3 - 800d40a: f7fe fefa bl 800c202 - prvAddTaskToReadyList( pxTCB ); - 800d40e: 68fb ldr r3, [r7, #12] - 800d410: 6ada ldr r2, [r3, #44] ; 0x2c - 800d412: 4b2a ldr r3, [pc, #168] ; (800d4bc ) - 800d414: 681b ldr r3, [r3, #0] - 800d416: 429a cmp r2, r3 - 800d418: d903 bls.n 800d422 - 800d41a: 68fb ldr r3, [r7, #12] - 800d41c: 6ada ldr r2, [r3, #44] ; 0x2c - 800d41e: 4b27 ldr r3, [pc, #156] ; (800d4bc ) - 800d420: 601a str r2, [r3, #0] - 800d422: 68fb ldr r3, [r7, #12] - 800d424: 6ada ldr r2, [r3, #44] ; 0x2c - 800d426: 0013 movs r3, r2 - 800d428: 009b lsls r3, r3, #2 - 800d42a: 189b adds r3, r3, r2 - 800d42c: 009b lsls r3, r3, #2 - 800d42e: 4a24 ldr r2, [pc, #144] ; (800d4c0 ) - 800d430: 189a adds r2, r3, r2 - 800d432: 68fb ldr r3, [r7, #12] - 800d434: 3304 adds r3, #4 - 800d436: 0019 movs r1, r3 - 800d438: 0010 movs r0, r2 - 800d43a: f7fe fe8a bl 800c152 - - /* If the moved task has a priority higher than the current - task then a yield must be performed. */ - if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) - 800d43e: 68fb ldr r3, [r7, #12] - 800d440: 6ada ldr r2, [r3, #44] ; 0x2c - 800d442: 4b20 ldr r3, [pc, #128] ; (800d4c4 ) - 800d444: 681b ldr r3, [r3, #0] - 800d446: 6adb ldr r3, [r3, #44] ; 0x2c - 800d448: 429a cmp r2, r3 - 800d44a: d302 bcc.n 800d452 - { - xYieldPending = pdTRUE; - 800d44c: 4b1e ldr r3, [pc, #120] ; (800d4c8 ) - 800d44e: 2201 movs r2, #1 - 800d450: 601a str r2, [r3, #0] - while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) - 800d452: 4b19 ldr r3, [pc, #100] ; (800d4b8 ) - 800d454: 681b ldr r3, [r3, #0] - 800d456: 2b00 cmp r3, #0 - 800d458: d1cb bne.n 800d3f2 - { - mtCOVERAGE_TEST_MARKER(); - } - } - - if( pxTCB != NULL ) - 800d45a: 68fb ldr r3, [r7, #12] - 800d45c: 2b00 cmp r3, #0 - 800d45e: d001 beq.n 800d464 - which may have prevented the next unblock time from being - re-calculated, in which case re-calculate it now. Mainly - important for low power tickless implementations, where - this can prevent an unnecessary exit from low power - state. */ - prvResetNextTaskUnblockTime(); - 800d460: f000 fb0c bl 800da7c - /* If any ticks occurred while the scheduler was suspended then - they should be processed now. This ensures the tick count does - not slip, and that any delayed tasks are resumed at the correct - time. */ - { - TickType_t xPendedCounts = xPendedTicks; /* Non-volatile copy. */ - 800d464: 4b19 ldr r3, [pc, #100] ; (800d4cc ) - 800d466: 681b ldr r3, [r3, #0] - 800d468: 607b str r3, [r7, #4] - - if( xPendedCounts > ( TickType_t ) 0U ) - 800d46a: 687b ldr r3, [r7, #4] - 800d46c: 2b00 cmp r3, #0 - 800d46e: d00f beq.n 800d490 - { - do - { - if( xTaskIncrementTick() != pdFALSE ) - 800d470: f000 f83c bl 800d4ec - 800d474: 1e03 subs r3, r0, #0 - 800d476: d002 beq.n 800d47e - { - xYieldPending = pdTRUE; - 800d478: 4b13 ldr r3, [pc, #76] ; (800d4c8 ) - 800d47a: 2201 movs r2, #1 - 800d47c: 601a str r2, [r3, #0] - } - else - { - mtCOVERAGE_TEST_MARKER(); - } - --xPendedCounts; - 800d47e: 687b ldr r3, [r7, #4] - 800d480: 3b01 subs r3, #1 - 800d482: 607b str r3, [r7, #4] - } while( xPendedCounts > ( TickType_t ) 0U ); - 800d484: 687b ldr r3, [r7, #4] - 800d486: 2b00 cmp r3, #0 - 800d488: d1f2 bne.n 800d470 - - xPendedTicks = 0; - 800d48a: 4b10 ldr r3, [pc, #64] ; (800d4cc ) - 800d48c: 2200 movs r2, #0 - 800d48e: 601a str r2, [r3, #0] - { - mtCOVERAGE_TEST_MARKER(); - } - } - - if( xYieldPending != pdFALSE ) - 800d490: 4b0d ldr r3, [pc, #52] ; (800d4c8 ) - 800d492: 681b ldr r3, [r3, #0] - 800d494: 2b00 cmp r3, #0 - 800d496: d003 beq.n 800d4a0 - { - #if( configUSE_PREEMPTION != 0 ) - { - xAlreadyYielded = pdTRUE; - 800d498: 2301 movs r3, #1 - 800d49a: 60bb str r3, [r7, #8] - } - #endif - taskYIELD_IF_USING_PREEMPTION(); - 800d49c: f001 f928 bl 800e6f0 - else - { - mtCOVERAGE_TEST_MARKER(); - } - } - taskEXIT_CRITICAL(); - 800d4a0: f001 f948 bl 800e734 - - return xAlreadyYielded; - 800d4a4: 68bb ldr r3, [r7, #8] -} - 800d4a6: 0018 movs r0, r3 - 800d4a8: 46bd mov sp, r7 - 800d4aa: b004 add sp, #16 - 800d4ac: bd80 pop {r7, pc} - 800d4ae: 46c0 nop ; (mov r8, r8) - 800d4b0: 200010e0 .word 0x200010e0 - 800d4b4: 200010b8 .word 0x200010b8 - 800d4b8: 20001078 .word 0x20001078 - 800d4bc: 200010c0 .word 0x200010c0 - 800d4c0: 20000be8 .word 0x20000be8 - 800d4c4: 20000be4 .word 0x20000be4 - 800d4c8: 200010cc .word 0x200010cc - 800d4cc: 200010c8 .word 0x200010c8 - -0800d4d0 : -/*-----------------------------------------------------------*/ - -TickType_t xTaskGetTickCount( void ) -{ - 800d4d0: b580 push {r7, lr} - 800d4d2: b082 sub sp, #8 - 800d4d4: af00 add r7, sp, #0 -TickType_t xTicks; - - /* Critical section required if running on a 16 bit processor. */ - portTICK_TYPE_ENTER_CRITICAL(); - { - xTicks = xTickCount; - 800d4d6: 4b04 ldr r3, [pc, #16] ; (800d4e8 ) - 800d4d8: 681b ldr r3, [r3, #0] - 800d4da: 607b str r3, [r7, #4] - } - portTICK_TYPE_EXIT_CRITICAL(); - - return xTicks; - 800d4dc: 687b ldr r3, [r7, #4] -} - 800d4de: 0018 movs r0, r3 - 800d4e0: 46bd mov sp, r7 - 800d4e2: b002 add sp, #8 - 800d4e4: bd80 pop {r7, pc} - 800d4e6: 46c0 nop ; (mov r8, r8) - 800d4e8: 200010bc .word 0x200010bc - -0800d4ec : - -#endif /* INCLUDE_xTaskAbortDelay */ -/*----------------------------------------------------------*/ - -BaseType_t xTaskIncrementTick( void ) -{ - 800d4ec: b580 push {r7, lr} - 800d4ee: b086 sub sp, #24 - 800d4f0: af00 add r7, sp, #0 -TCB_t * pxTCB; -TickType_t xItemValue; -BaseType_t xSwitchRequired = pdFALSE; - 800d4f2: 2300 movs r3, #0 - 800d4f4: 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 ) - 800d4f6: 4b4a ldr r3, [pc, #296] ; (800d620 ) - 800d4f8: 681b ldr r3, [r3, #0] - 800d4fa: 2b00 cmp r3, #0 - 800d4fc: d000 beq.n 800d500 - 800d4fe: e084 b.n 800d60a - { - /* Minor optimisation. The tick count cannot change in this - block. */ - const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; - 800d500: 4b48 ldr r3, [pc, #288] ; (800d624 ) - 800d502: 681b ldr r3, [r3, #0] - 800d504: 3301 adds r3, #1 - 800d506: 613b str r3, [r7, #16] - - /* Increment the RTOS tick, switching the delayed and overflowed - delayed lists if it wraps to 0. */ - xTickCount = xConstTickCount; - 800d508: 4b46 ldr r3, [pc, #280] ; (800d624 ) - 800d50a: 693a ldr r2, [r7, #16] - 800d50c: 601a str r2, [r3, #0] - - if( xConstTickCount == ( TickType_t ) 0U ) /*lint !e774 'if' does not always evaluate to false as it is looking for an overflow. */ - 800d50e: 693b ldr r3, [r7, #16] - 800d510: 2b00 cmp r3, #0 - 800d512: d117 bne.n 800d544 - { - taskSWITCH_DELAYED_LISTS(); - 800d514: 4b44 ldr r3, [pc, #272] ; (800d628 ) - 800d516: 681b ldr r3, [r3, #0] - 800d518: 681b ldr r3, [r3, #0] - 800d51a: 2b00 cmp r3, #0 - 800d51c: d001 beq.n 800d522 - 800d51e: b672 cpsid i - 800d520: e7fe b.n 800d520 - 800d522: 4b41 ldr r3, [pc, #260] ; (800d628 ) - 800d524: 681b ldr r3, [r3, #0] - 800d526: 60fb str r3, [r7, #12] - 800d528: 4b40 ldr r3, [pc, #256] ; (800d62c ) - 800d52a: 681a ldr r2, [r3, #0] - 800d52c: 4b3e ldr r3, [pc, #248] ; (800d628 ) - 800d52e: 601a str r2, [r3, #0] - 800d530: 4b3e ldr r3, [pc, #248] ; (800d62c ) - 800d532: 68fa ldr r2, [r7, #12] - 800d534: 601a str r2, [r3, #0] - 800d536: 4b3e ldr r3, [pc, #248] ; (800d630 ) - 800d538: 681b ldr r3, [r3, #0] - 800d53a: 1c5a adds r2, r3, #1 - 800d53c: 4b3c ldr r3, [pc, #240] ; (800d630 ) - 800d53e: 601a str r2, [r3, #0] - 800d540: f000 fa9c bl 800da7c - - /* 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 ) - 800d544: 4b3b ldr r3, [pc, #236] ; (800d634 ) - 800d546: 681b ldr r3, [r3, #0] - 800d548: 693a ldr r2, [r7, #16] - 800d54a: 429a cmp r2, r3 - 800d54c: d349 bcc.n 800d5e2 - { - for( ;; ) - { - if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 800d54e: 4b36 ldr r3, [pc, #216] ; (800d628 ) - 800d550: 681b ldr r3, [r3, #0] - 800d552: 681b ldr r3, [r3, #0] - 800d554: 2b00 cmp r3, #0 - 800d556: d104 bne.n 800d562 - /* 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. */ - 800d558: 4b36 ldr r3, [pc, #216] ; (800d634 ) - 800d55a: 2201 movs r2, #1 - 800d55c: 4252 negs r2, r2 - 800d55e: 601a str r2, [r3, #0] - break; - 800d560: e03f b.n 800d5e2 - { - /* 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. */ - 800d562: 4b31 ldr r3, [pc, #196] ; (800d628 ) - 800d564: 681b ldr r3, [r3, #0] - 800d566: 68db ldr r3, [r3, #12] - 800d568: 68db ldr r3, [r3, #12] - 800d56a: 60bb str r3, [r7, #8] - xItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xStateListItem ) ); - 800d56c: 68bb ldr r3, [r7, #8] - 800d56e: 685b ldr r3, [r3, #4] - 800d570: 607b str r3, [r7, #4] - - if( xConstTickCount < xItemValue ) - 800d572: 693a ldr r2, [r7, #16] - 800d574: 687b ldr r3, [r7, #4] - 800d576: 429a cmp r2, r3 - 800d578: d203 bcs.n 800d582 - /* 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; - 800d57a: 4b2e ldr r3, [pc, #184] ; (800d634 ) - 800d57c: 687a ldr r2, [r7, #4] - 800d57e: 601a str r2, [r3, #0] - break; /*lint !e9011 Code structure here is deedmed easier to understand with multiple breaks. */ - 800d580: e02f b.n 800d5e2 - { - mtCOVERAGE_TEST_MARKER(); - } - - /* It is time to remove the item from the Blocked state. */ - ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 800d582: 68bb ldr r3, [r7, #8] - 800d584: 3304 adds r3, #4 - 800d586: 0018 movs r0, r3 - 800d588: f7fe fe3b bl 800c202 - - /* Is the task waiting on an event also? If so remove - it from the event list. */ - if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) - 800d58c: 68bb ldr r3, [r7, #8] - 800d58e: 6a9b ldr r3, [r3, #40] ; 0x28 - 800d590: 2b00 cmp r3, #0 - 800d592: d004 beq.n 800d59e - { - ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); - 800d594: 68bb ldr r3, [r7, #8] - 800d596: 3318 adds r3, #24 - 800d598: 0018 movs r0, r3 - 800d59a: f7fe fe32 bl 800c202 - mtCOVERAGE_TEST_MARKER(); - } - - /* Place the unblocked task into the appropriate ready - list. */ - prvAddTaskToReadyList( pxTCB ); - 800d59e: 68bb ldr r3, [r7, #8] - 800d5a0: 6ada ldr r2, [r3, #44] ; 0x2c - 800d5a2: 4b25 ldr r3, [pc, #148] ; (800d638 ) - 800d5a4: 681b ldr r3, [r3, #0] - 800d5a6: 429a cmp r2, r3 - 800d5a8: d903 bls.n 800d5b2 - 800d5aa: 68bb ldr r3, [r7, #8] - 800d5ac: 6ada ldr r2, [r3, #44] ; 0x2c - 800d5ae: 4b22 ldr r3, [pc, #136] ; (800d638 ) - 800d5b0: 601a str r2, [r3, #0] - 800d5b2: 68bb ldr r3, [r7, #8] - 800d5b4: 6ada ldr r2, [r3, #44] ; 0x2c - 800d5b6: 0013 movs r3, r2 - 800d5b8: 009b lsls r3, r3, #2 - 800d5ba: 189b adds r3, r3, r2 - 800d5bc: 009b lsls r3, r3, #2 - 800d5be: 4a1f ldr r2, [pc, #124] ; (800d63c ) - 800d5c0: 189a adds r2, r3, r2 - 800d5c2: 68bb ldr r3, [r7, #8] - 800d5c4: 3304 adds r3, #4 - 800d5c6: 0019 movs r1, r3 - 800d5c8: 0010 movs r0, r2 - 800d5ca: f7fe fdc2 bl 800c152 - { - /* 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 ) - 800d5ce: 68bb ldr r3, [r7, #8] - 800d5d0: 6ada ldr r2, [r3, #44] ; 0x2c - 800d5d2: 4b1b ldr r3, [pc, #108] ; (800d640 ) - 800d5d4: 681b ldr r3, [r3, #0] - 800d5d6: 6adb ldr r3, [r3, #44] ; 0x2c - 800d5d8: 429a cmp r2, r3 - 800d5da: d3b8 bcc.n 800d54e - { - xSwitchRequired = pdTRUE; - 800d5dc: 2301 movs r3, #1 - 800d5de: 617b str r3, [r7, #20] - if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 800d5e0: e7b5 b.n 800d54e - /* 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 ) - 800d5e2: 4b17 ldr r3, [pc, #92] ; (800d640 ) - 800d5e4: 681b ldr r3, [r3, #0] - 800d5e6: 6ada ldr r2, [r3, #44] ; 0x2c - 800d5e8: 4914 ldr r1, [pc, #80] ; (800d63c ) - 800d5ea: 0013 movs r3, r2 - 800d5ec: 009b lsls r3, r3, #2 - 800d5ee: 189b adds r3, r3, r2 - 800d5f0: 009b lsls r3, r3, #2 - 800d5f2: 585b ldr r3, [r3, r1] - 800d5f4: 2b01 cmp r3, #1 - 800d5f6: d901 bls.n 800d5fc - { - xSwitchRequired = pdTRUE; - 800d5f8: 2301 movs r3, #1 - 800d5fa: 617b str r3, [r7, #20] - } - #endif /* configUSE_TICK_HOOK */ - - #if ( configUSE_PREEMPTION == 1 ) - { - if( xYieldPending != pdFALSE ) - 800d5fc: 4b11 ldr r3, [pc, #68] ; (800d644 ) - 800d5fe: 681b ldr r3, [r3, #0] - 800d600: 2b00 cmp r3, #0 - 800d602: d007 beq.n 800d614 - { - xSwitchRequired = pdTRUE; - 800d604: 2301 movs r3, #1 - 800d606: 617b str r3, [r7, #20] - 800d608: e004 b.n 800d614 - } - #endif /* configUSE_PREEMPTION */ - } - else - { - ++xPendedTicks; - 800d60a: 4b0f ldr r3, [pc, #60] ; (800d648 ) - 800d60c: 681b ldr r3, [r3, #0] - 800d60e: 1c5a adds r2, r3, #1 - 800d610: 4b0d ldr r3, [pc, #52] ; (800d648 ) - 800d612: 601a str r2, [r3, #0] - vApplicationTickHook(); - } - #endif - } - - return xSwitchRequired; - 800d614: 697b ldr r3, [r7, #20] -} - 800d616: 0018 movs r0, r3 - 800d618: 46bd mov sp, r7 - 800d61a: b006 add sp, #24 - 800d61c: bd80 pop {r7, pc} - 800d61e: 46c0 nop ; (mov r8, r8) - 800d620: 200010e0 .word 0x200010e0 - 800d624: 200010bc .word 0x200010bc - 800d628: 20001070 .word 0x20001070 - 800d62c: 20001074 .word 0x20001074 - 800d630: 200010d0 .word 0x200010d0 - 800d634: 200010d8 .word 0x200010d8 - 800d638: 200010c0 .word 0x200010c0 - 800d63c: 20000be8 .word 0x20000be8 - 800d640: 20000be4 .word 0x20000be4 - 800d644: 200010cc .word 0x200010cc - 800d648: 200010c8 .word 0x200010c8 - -0800d64c : - -#endif /* configUSE_APPLICATION_TASK_TAG */ -/*-----------------------------------------------------------*/ - -void vTaskSwitchContext( void ) -{ - 800d64c: b580 push {r7, lr} - 800d64e: b082 sub sp, #8 - 800d650: af00 add r7, sp, #0 - if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE ) - 800d652: 4b25 ldr r3, [pc, #148] ; (800d6e8 ) - 800d654: 681b ldr r3, [r3, #0] - 800d656: 2b00 cmp r3, #0 - 800d658: d003 beq.n 800d662 - { - /* The scheduler is currently suspended - do not allow a context - switch. */ - xYieldPending = pdTRUE; - 800d65a: 4b24 ldr r3, [pc, #144] ; (800d6ec ) - 800d65c: 2201 movs r2, #1 - 800d65e: 601a str r2, [r3, #0] - for additional information. */ - _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); - } - #endif /* configUSE_NEWLIB_REENTRANT */ - } -} - 800d660: e03d b.n 800d6de - xYieldPending = pdFALSE; - 800d662: 4b22 ldr r3, [pc, #136] ; (800d6ec ) - 800d664: 2200 movs r2, #0 - 800d666: 601a str r2, [r3, #0] - 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. */ - 800d668: 4b21 ldr r3, [pc, #132] ; (800d6f0 ) - 800d66a: 681b ldr r3, [r3, #0] - 800d66c: 607b str r3, [r7, #4] - 800d66e: e007 b.n 800d680 - 800d670: 687b ldr r3, [r7, #4] - 800d672: 2b00 cmp r3, #0 - 800d674: d101 bne.n 800d67a - 800d676: b672 cpsid i - 800d678: e7fe b.n 800d678 - 800d67a: 687b ldr r3, [r7, #4] - 800d67c: 3b01 subs r3, #1 - 800d67e: 607b str r3, [r7, #4] - 800d680: 491c ldr r1, [pc, #112] ; (800d6f4 ) - 800d682: 687a ldr r2, [r7, #4] - 800d684: 0013 movs r3, r2 - 800d686: 009b lsls r3, r3, #2 - 800d688: 189b adds r3, r3, r2 - 800d68a: 009b lsls r3, r3, #2 - 800d68c: 585b ldr r3, [r3, r1] - 800d68e: 2b00 cmp r3, #0 - 800d690: d0ee beq.n 800d670 - 800d692: 687a ldr r2, [r7, #4] - 800d694: 0013 movs r3, r2 - 800d696: 009b lsls r3, r3, #2 - 800d698: 189b adds r3, r3, r2 - 800d69a: 009b lsls r3, r3, #2 - 800d69c: 4a15 ldr r2, [pc, #84] ; (800d6f4 ) - 800d69e: 189b adds r3, r3, r2 - 800d6a0: 603b str r3, [r7, #0] - 800d6a2: 683b ldr r3, [r7, #0] - 800d6a4: 685b ldr r3, [r3, #4] - 800d6a6: 685a ldr r2, [r3, #4] - 800d6a8: 683b ldr r3, [r7, #0] - 800d6aa: 605a str r2, [r3, #4] - 800d6ac: 683b ldr r3, [r7, #0] - 800d6ae: 685a ldr r2, [r3, #4] - 800d6b0: 683b ldr r3, [r7, #0] - 800d6b2: 3308 adds r3, #8 - 800d6b4: 429a cmp r2, r3 - 800d6b6: d104 bne.n 800d6c2 - 800d6b8: 683b ldr r3, [r7, #0] - 800d6ba: 685b ldr r3, [r3, #4] - 800d6bc: 685a ldr r2, [r3, #4] - 800d6be: 683b ldr r3, [r7, #0] - 800d6c0: 605a str r2, [r3, #4] - 800d6c2: 683b ldr r3, [r7, #0] - 800d6c4: 685b ldr r3, [r3, #4] - 800d6c6: 68da ldr r2, [r3, #12] - 800d6c8: 4b0b ldr r3, [pc, #44] ; (800d6f8 ) - 800d6ca: 601a str r2, [r3, #0] - 800d6cc: 4b08 ldr r3, [pc, #32] ; (800d6f0 ) - 800d6ce: 687a ldr r2, [r7, #4] - 800d6d0: 601a str r2, [r3, #0] - _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); - 800d6d2: 4b09 ldr r3, [pc, #36] ; (800d6f8 ) - 800d6d4: 681b ldr r3, [r3, #0] - 800d6d6: 3354 adds r3, #84 ; 0x54 - 800d6d8: 001a movs r2, r3 - 800d6da: 4b08 ldr r3, [pc, #32] ; (800d6fc ) - 800d6dc: 601a str r2, [r3, #0] -} - 800d6de: 46c0 nop ; (mov r8, r8) - 800d6e0: 46bd mov sp, r7 - 800d6e2: b002 add sp, #8 - 800d6e4: bd80 pop {r7, pc} - 800d6e6: 46c0 nop ; (mov r8, r8) - 800d6e8: 200010e0 .word 0x200010e0 - 800d6ec: 200010cc .word 0x200010cc - 800d6f0: 200010c0 .word 0x200010c0 - 800d6f4: 20000be8 .word 0x20000be8 - 800d6f8: 20000be4 .word 0x20000be4 - 800d6fc: 20000050 .word 0x20000050 - -0800d700 : -/*-----------------------------------------------------------*/ - -void vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait ) -{ - 800d700: b580 push {r7, lr} - 800d702: b082 sub sp, #8 - 800d704: af00 add r7, sp, #0 - 800d706: 6078 str r0, [r7, #4] - 800d708: 6039 str r1, [r7, #0] - configASSERT( pxEventList ); - 800d70a: 687b ldr r3, [r7, #4] - 800d70c: 2b00 cmp r3, #0 - 800d70e: d101 bne.n 800d714 - 800d710: b672 cpsid i - 800d712: e7fe b.n 800d712 - - /* Place the event list item of the TCB in the appropriate event list. - This is placed in the list in priority order so the highest priority task - is the first to be woken by the event. The queue that contains the event - list is locked, preventing simultaneous access from interrupts. */ - vListInsert( pxEventList, &( pxCurrentTCB->xEventListItem ) ); - 800d714: 4b08 ldr r3, [pc, #32] ; (800d738 ) - 800d716: 681b ldr r3, [r3, #0] - 800d718: 3318 adds r3, #24 - 800d71a: 001a movs r2, r3 - 800d71c: 687b ldr r3, [r7, #4] - 800d71e: 0011 movs r1, r2 - 800d720: 0018 movs r0, r3 - 800d722: f7fe fd38 bl 800c196 - - prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); - 800d726: 683b ldr r3, [r7, #0] - 800d728: 2101 movs r1, #1 - 800d72a: 0018 movs r0, r3 - 800d72c: f000 fb34 bl 800dd98 -} - 800d730: 46c0 nop ; (mov r8, r8) - 800d732: 46bd mov sp, r7 - 800d734: b002 add sp, #8 - 800d736: bd80 pop {r7, pc} - 800d738: 20000be4 .word 0x20000be4 - -0800d73c : -/*-----------------------------------------------------------*/ - -#if( configUSE_TIMERS == 1 ) - - void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) - { - 800d73c: b580 push {r7, lr} - 800d73e: b084 sub sp, #16 - 800d740: af00 add r7, sp, #0 - 800d742: 60f8 str r0, [r7, #12] - 800d744: 60b9 str r1, [r7, #8] - 800d746: 607a str r2, [r7, #4] - configASSERT( pxEventList ); - 800d748: 68fb ldr r3, [r7, #12] - 800d74a: 2b00 cmp r3, #0 - 800d74c: d101 bne.n 800d752 - 800d74e: b672 cpsid i - 800d750: e7fe b.n 800d750 - - /* Place the event list item of the TCB in the appropriate event list. - In this case it is assume that this is the only task that is going to - be waiting on this event list, so the faster vListInsertEnd() function - can be used in place of vListInsert. */ - vListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) ); - 800d752: 4b0c ldr r3, [pc, #48] ; (800d784 ) - 800d754: 681b ldr r3, [r3, #0] - 800d756: 3318 adds r3, #24 - 800d758: 001a movs r2, r3 - 800d75a: 68fb ldr r3, [r7, #12] - 800d75c: 0011 movs r1, r2 - 800d75e: 0018 movs r0, r3 - 800d760: f7fe fcf7 bl 800c152 - - /* If the task should block indefinitely then set the block time to a - value that will be recognised as an indefinite delay inside the - prvAddCurrentTaskToDelayedList() function. */ - if( xWaitIndefinitely != pdFALSE ) - 800d764: 687b ldr r3, [r7, #4] - 800d766: 2b00 cmp r3, #0 - 800d768: d002 beq.n 800d770 - { - xTicksToWait = portMAX_DELAY; - 800d76a: 2301 movs r3, #1 - 800d76c: 425b negs r3, r3 - 800d76e: 60bb str r3, [r7, #8] - } - - traceTASK_DELAY_UNTIL( ( xTickCount + xTicksToWait ) ); - prvAddCurrentTaskToDelayedList( xTicksToWait, xWaitIndefinitely ); - 800d770: 687a ldr r2, [r7, #4] - 800d772: 68bb ldr r3, [r7, #8] - 800d774: 0011 movs r1, r2 - 800d776: 0018 movs r0, r3 - 800d778: f000 fb0e bl 800dd98 - } - 800d77c: 46c0 nop ; (mov r8, r8) - 800d77e: 46bd mov sp, r7 - 800d780: b004 add sp, #16 - 800d782: bd80 pop {r7, pc} - 800d784: 20000be4 .word 0x20000be4 - -0800d788 : - -#endif /* configUSE_TIMERS */ -/*-----------------------------------------------------------*/ - -BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) -{ - 800d788: b580 push {r7, lr} - 800d78a: b084 sub sp, #16 - 800d78c: af00 add r7, sp, #0 - 800d78e: 6078 str r0, [r7, #4] - get called - the lock count on the queue will get modified instead. This - means exclusive access to the event list is guaranteed here. - - This function assumes that a check has already been made to ensure that - pxEventList is not empty. */ - pxUnblockedTCB = listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800d790: 687b ldr r3, [r7, #4] - 800d792: 68db ldr r3, [r3, #12] - 800d794: 68db ldr r3, [r3, #12] - 800d796: 60bb str r3, [r7, #8] - configASSERT( pxUnblockedTCB ); - 800d798: 68bb ldr r3, [r7, #8] - 800d79a: 2b00 cmp r3, #0 - 800d79c: d101 bne.n 800d7a2 - 800d79e: b672 cpsid i - 800d7a0: e7fe b.n 800d7a0 - ( void ) uxListRemove( &( pxUnblockedTCB->xEventListItem ) ); - 800d7a2: 68bb ldr r3, [r7, #8] - 800d7a4: 3318 adds r3, #24 - 800d7a6: 0018 movs r0, r3 - 800d7a8: f7fe fd2b bl 800c202 - - if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 800d7ac: 4b1e ldr r3, [pc, #120] ; (800d828 ) - 800d7ae: 681b ldr r3, [r3, #0] - 800d7b0: 2b00 cmp r3, #0 - 800d7b2: d11d bne.n 800d7f0 - { - ( void ) uxListRemove( &( pxUnblockedTCB->xStateListItem ) ); - 800d7b4: 68bb ldr r3, [r7, #8] - 800d7b6: 3304 adds r3, #4 - 800d7b8: 0018 movs r0, r3 - 800d7ba: f7fe fd22 bl 800c202 - prvAddTaskToReadyList( pxUnblockedTCB ); - 800d7be: 68bb ldr r3, [r7, #8] - 800d7c0: 6ada ldr r2, [r3, #44] ; 0x2c - 800d7c2: 4b1a ldr r3, [pc, #104] ; (800d82c ) - 800d7c4: 681b ldr r3, [r3, #0] - 800d7c6: 429a cmp r2, r3 - 800d7c8: d903 bls.n 800d7d2 - 800d7ca: 68bb ldr r3, [r7, #8] - 800d7cc: 6ada ldr r2, [r3, #44] ; 0x2c - 800d7ce: 4b17 ldr r3, [pc, #92] ; (800d82c ) - 800d7d0: 601a str r2, [r3, #0] - 800d7d2: 68bb ldr r3, [r7, #8] - 800d7d4: 6ada ldr r2, [r3, #44] ; 0x2c - 800d7d6: 0013 movs r3, r2 - 800d7d8: 009b lsls r3, r3, #2 - 800d7da: 189b adds r3, r3, r2 - 800d7dc: 009b lsls r3, r3, #2 - 800d7de: 4a14 ldr r2, [pc, #80] ; (800d830 ) - 800d7e0: 189a adds r2, r3, r2 - 800d7e2: 68bb ldr r3, [r7, #8] - 800d7e4: 3304 adds r3, #4 - 800d7e6: 0019 movs r1, r3 - 800d7e8: 0010 movs r0, r2 - 800d7ea: f7fe fcb2 bl 800c152 - 800d7ee: e007 b.n 800d800 - } - else - { - /* The delayed and ready lists cannot be accessed, so hold this task - pending until the scheduler is resumed. */ - vListInsertEnd( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) ); - 800d7f0: 68bb ldr r3, [r7, #8] - 800d7f2: 3318 adds r3, #24 - 800d7f4: 001a movs r2, r3 - 800d7f6: 4b0f ldr r3, [pc, #60] ; (800d834 ) - 800d7f8: 0011 movs r1, r2 - 800d7fa: 0018 movs r0, r3 - 800d7fc: f7fe fca9 bl 800c152 - } - - if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority ) - 800d800: 68bb ldr r3, [r7, #8] - 800d802: 6ada ldr r2, [r3, #44] ; 0x2c - 800d804: 4b0c ldr r3, [pc, #48] ; (800d838 ) - 800d806: 681b ldr r3, [r3, #0] - 800d808: 6adb ldr r3, [r3, #44] ; 0x2c - 800d80a: 429a cmp r2, r3 - 800d80c: d905 bls.n 800d81a - { - /* Return true if the task removed from the event list has a higher - priority than the calling task. This allows the calling task to know if - it should force a context switch now. */ - xReturn = pdTRUE; - 800d80e: 2301 movs r3, #1 - 800d810: 60fb str r3, [r7, #12] - - /* Mark that a yield is pending in case the user is not using the - "xHigherPriorityTaskWoken" parameter to an ISR safe FreeRTOS function. */ - xYieldPending = pdTRUE; - 800d812: 4b0a ldr r3, [pc, #40] ; (800d83c ) - 800d814: 2201 movs r2, #1 - 800d816: 601a str r2, [r3, #0] - 800d818: e001 b.n 800d81e - } - else - { - xReturn = pdFALSE; - 800d81a: 2300 movs r3, #0 - 800d81c: 60fb str r3, [r7, #12] - } - - return xReturn; - 800d81e: 68fb ldr r3, [r7, #12] -} - 800d820: 0018 movs r0, r3 - 800d822: 46bd mov sp, r7 - 800d824: b004 add sp, #16 - 800d826: bd80 pop {r7, pc} - 800d828: 200010e0 .word 0x200010e0 - 800d82c: 200010c0 .word 0x200010c0 - 800d830: 20000be8 .word 0x20000be8 - 800d834: 20001078 .word 0x20001078 - 800d838: 20000be4 .word 0x20000be4 - 800d83c: 200010cc .word 0x200010cc - -0800d840 : - taskEXIT_CRITICAL(); -} -/*-----------------------------------------------------------*/ - -void vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) -{ - 800d840: b580 push {r7, lr} - 800d842: b082 sub sp, #8 - 800d844: af00 add r7, sp, #0 - 800d846: 6078 str r0, [r7, #4] - /* For internal use only as it does not use a critical section. */ - pxTimeOut->xOverflowCount = xNumOfOverflows; - 800d848: 4b05 ldr r3, [pc, #20] ; (800d860 ) - 800d84a: 681a ldr r2, [r3, #0] - 800d84c: 687b ldr r3, [r7, #4] - 800d84e: 601a str r2, [r3, #0] - pxTimeOut->xTimeOnEntering = xTickCount; - 800d850: 4b04 ldr r3, [pc, #16] ; (800d864 ) - 800d852: 681a ldr r2, [r3, #0] - 800d854: 687b ldr r3, [r7, #4] - 800d856: 605a str r2, [r3, #4] -} - 800d858: 46c0 nop ; (mov r8, r8) - 800d85a: 46bd mov sp, r7 - 800d85c: b002 add sp, #8 - 800d85e: bd80 pop {r7, pc} - 800d860: 200010d0 .word 0x200010d0 - 800d864: 200010bc .word 0x200010bc - -0800d868 : -/*-----------------------------------------------------------*/ - -BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) -{ - 800d868: b580 push {r7, lr} - 800d86a: b086 sub sp, #24 - 800d86c: af00 add r7, sp, #0 - 800d86e: 6078 str r0, [r7, #4] - 800d870: 6039 str r1, [r7, #0] -BaseType_t xReturn; - - configASSERT( pxTimeOut ); - 800d872: 687b ldr r3, [r7, #4] - 800d874: 2b00 cmp r3, #0 - 800d876: d101 bne.n 800d87c - 800d878: b672 cpsid i - 800d87a: e7fe b.n 800d87a - configASSERT( pxTicksToWait ); - 800d87c: 683b ldr r3, [r7, #0] - 800d87e: 2b00 cmp r3, #0 - 800d880: d101 bne.n 800d886 - 800d882: b672 cpsid i - 800d884: e7fe b.n 800d884 - - taskENTER_CRITICAL(); - 800d886: f000 ff43 bl 800e710 - { - /* Minor optimisation. The tick count cannot change in this block. */ - const TickType_t xConstTickCount = xTickCount; - 800d88a: 4b1d ldr r3, [pc, #116] ; (800d900 ) - 800d88c: 681b ldr r3, [r3, #0] - 800d88e: 613b str r3, [r7, #16] - const TickType_t xElapsedTime = xConstTickCount - pxTimeOut->xTimeOnEntering; - 800d890: 687b ldr r3, [r7, #4] - 800d892: 685b ldr r3, [r3, #4] - 800d894: 693a ldr r2, [r7, #16] - 800d896: 1ad3 subs r3, r2, r3 - 800d898: 60fb str r3, [r7, #12] - } - else - #endif - - #if ( INCLUDE_vTaskSuspend == 1 ) - if( *pxTicksToWait == portMAX_DELAY ) - 800d89a: 683b ldr r3, [r7, #0] - 800d89c: 681b ldr r3, [r3, #0] - 800d89e: 3301 adds r3, #1 - 800d8a0: d102 bne.n 800d8a8 - { - /* If INCLUDE_vTaskSuspend is set to 1 and the block time - specified is the maximum block time then the task should block - indefinitely, and therefore never time out. */ - xReturn = pdFALSE; - 800d8a2: 2300 movs r3, #0 - 800d8a4: 617b str r3, [r7, #20] - 800d8a6: e024 b.n 800d8f2 - } - else - #endif - - if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xConstTickCount >= pxTimeOut->xTimeOnEntering ) ) /*lint !e525 Indentation preferred as is to make code within pre-processor directives clearer. */ - 800d8a8: 687b ldr r3, [r7, #4] - 800d8aa: 681a ldr r2, [r3, #0] - 800d8ac: 4b15 ldr r3, [pc, #84] ; (800d904 ) - 800d8ae: 681b ldr r3, [r3, #0] - 800d8b0: 429a cmp r2, r3 - 800d8b2: d007 beq.n 800d8c4 - 800d8b4: 687b ldr r3, [r7, #4] - 800d8b6: 685b ldr r3, [r3, #4] - 800d8b8: 693a ldr r2, [r7, #16] - 800d8ba: 429a cmp r2, r3 - 800d8bc: d302 bcc.n 800d8c4 - /* The tick count is greater than the time at which - vTaskSetTimeout() was called, but has also overflowed since - vTaskSetTimeOut() was called. It must have wrapped all the way - around and gone past again. This passed since vTaskSetTimeout() - was called. */ - xReturn = pdTRUE; - 800d8be: 2301 movs r3, #1 - 800d8c0: 617b str r3, [r7, #20] - 800d8c2: e016 b.n 800d8f2 - } - else if( xElapsedTime < *pxTicksToWait ) /*lint !e961 Explicit casting is only redundant with some compilers, whereas others require it to prevent integer conversion errors. */ - 800d8c4: 683b ldr r3, [r7, #0] - 800d8c6: 681b ldr r3, [r3, #0] - 800d8c8: 68fa ldr r2, [r7, #12] - 800d8ca: 429a cmp r2, r3 - 800d8cc: d20c bcs.n 800d8e8 - { - /* Not a genuine timeout. Adjust parameters for time remaining. */ - *pxTicksToWait -= xElapsedTime; - 800d8ce: 683b ldr r3, [r7, #0] - 800d8d0: 681a ldr r2, [r3, #0] - 800d8d2: 68fb ldr r3, [r7, #12] - 800d8d4: 1ad2 subs r2, r2, r3 - 800d8d6: 683b ldr r3, [r7, #0] - 800d8d8: 601a str r2, [r3, #0] - vTaskInternalSetTimeOutState( pxTimeOut ); - 800d8da: 687b ldr r3, [r7, #4] - 800d8dc: 0018 movs r0, r3 - 800d8de: f7ff ffaf bl 800d840 - xReturn = pdFALSE; - 800d8e2: 2300 movs r3, #0 - 800d8e4: 617b str r3, [r7, #20] - 800d8e6: e004 b.n 800d8f2 - } - else - { - *pxTicksToWait = 0; - 800d8e8: 683b ldr r3, [r7, #0] - 800d8ea: 2200 movs r2, #0 - 800d8ec: 601a str r2, [r3, #0] - xReturn = pdTRUE; - 800d8ee: 2301 movs r3, #1 - 800d8f0: 617b str r3, [r7, #20] - } - } - taskEXIT_CRITICAL(); - 800d8f2: f000 ff1f bl 800e734 - - return xReturn; - 800d8f6: 697b ldr r3, [r7, #20] -} - 800d8f8: 0018 movs r0, r3 - 800d8fa: 46bd mov sp, r7 - 800d8fc: b006 add sp, #24 - 800d8fe: bd80 pop {r7, pc} - 800d900: 200010bc .word 0x200010bc - 800d904: 200010d0 .word 0x200010d0 - -0800d908 : -/*-----------------------------------------------------------*/ - -void vTaskMissedYield( void ) -{ - 800d908: b580 push {r7, lr} - 800d90a: af00 add r7, sp, #0 - xYieldPending = pdTRUE; - 800d90c: 4b02 ldr r3, [pc, #8] ; (800d918 ) - 800d90e: 2201 movs r2, #1 - 800d910: 601a str r2, [r3, #0] -} - 800d912: 46c0 nop ; (mov r8, r8) - 800d914: 46bd mov sp, r7 - 800d916: bd80 pop {r7, pc} - 800d918: 200010cc .word 0x200010cc - -0800d91c : - * - * void prvIdleTask( void *pvParameters ); - * - */ -static portTASK_FUNCTION( prvIdleTask, pvParameters ) -{ - 800d91c: b580 push {r7, lr} - 800d91e: b082 sub sp, #8 - 800d920: af00 add r7, sp, #0 - 800d922: 6078 str r0, [r7, #4] - - for( ;; ) - { - /* See if any tasks have deleted themselves - if so then the idle task - is responsible for freeing the deleted task's TCB and stack. */ - prvCheckTasksWaitingTermination(); - 800d924: f000 f84e bl 800d9c4 - - A critical region is not required here as we are just reading from - the list, and an occasional incorrect value will not matter. If - the ready list at the idle priority contains more than one task - then a task other than the idle task is ready to execute. */ - if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 ) - 800d928: 4b03 ldr r3, [pc, #12] ; (800d938 ) - 800d92a: 681b ldr r3, [r3, #0] - 800d92c: 2b01 cmp r3, #1 - 800d92e: d9f9 bls.n 800d924 - { - taskYIELD(); - 800d930: f000 fede bl 800e6f0 - prvCheckTasksWaitingTermination(); - 800d934: e7f6 b.n 800d924 - 800d936: 46c0 nop ; (mov r8, r8) - 800d938: 20000be8 .word 0x20000be8 - -0800d93c : - -#endif /* portUSING_MPU_WRAPPERS */ -/*-----------------------------------------------------------*/ - -static void prvInitialiseTaskLists( void ) -{ - 800d93c: b580 push {r7, lr} - 800d93e: b082 sub sp, #8 - 800d940: af00 add r7, sp, #0 -UBaseType_t uxPriority; - - for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ) - 800d942: 2300 movs r3, #0 - 800d944: 607b str r3, [r7, #4] - 800d946: e00c b.n 800d962 - { - vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) ); - 800d948: 687a ldr r2, [r7, #4] - 800d94a: 0013 movs r3, r2 - 800d94c: 009b lsls r3, r3, #2 - 800d94e: 189b adds r3, r3, r2 - 800d950: 009b lsls r3, r3, #2 - 800d952: 4a14 ldr r2, [pc, #80] ; (800d9a4 ) - 800d954: 189b adds r3, r3, r2 - 800d956: 0018 movs r0, r3 - 800d958: f7fe fbd2 bl 800c100 - for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ) - 800d95c: 687b ldr r3, [r7, #4] - 800d95e: 3301 adds r3, #1 - 800d960: 607b str r3, [r7, #4] - 800d962: 687b ldr r3, [r7, #4] - 800d964: 2b37 cmp r3, #55 ; 0x37 - 800d966: d9ef bls.n 800d948 - } - - vListInitialise( &xDelayedTaskList1 ); - 800d968: 4b0f ldr r3, [pc, #60] ; (800d9a8 ) - 800d96a: 0018 movs r0, r3 - 800d96c: f7fe fbc8 bl 800c100 - vListInitialise( &xDelayedTaskList2 ); - 800d970: 4b0e ldr r3, [pc, #56] ; (800d9ac ) - 800d972: 0018 movs r0, r3 - 800d974: f7fe fbc4 bl 800c100 - vListInitialise( &xPendingReadyList ); - 800d978: 4b0d ldr r3, [pc, #52] ; (800d9b0 ) - 800d97a: 0018 movs r0, r3 - 800d97c: f7fe fbc0 bl 800c100 - - #if ( INCLUDE_vTaskDelete == 1 ) - { - vListInitialise( &xTasksWaitingTermination ); - 800d980: 4b0c ldr r3, [pc, #48] ; (800d9b4 ) - 800d982: 0018 movs r0, r3 - 800d984: f7fe fbbc bl 800c100 - } - #endif /* INCLUDE_vTaskDelete */ - - #if ( INCLUDE_vTaskSuspend == 1 ) - { - vListInitialise( &xSuspendedTaskList ); - 800d988: 4b0b ldr r3, [pc, #44] ; (800d9b8 ) - 800d98a: 0018 movs r0, r3 - 800d98c: f7fe fbb8 bl 800c100 - } - #endif /* INCLUDE_vTaskSuspend */ - - /* Start with pxDelayedTaskList using list1 and the pxOverflowDelayedTaskList - using list2. */ - pxDelayedTaskList = &xDelayedTaskList1; - 800d990: 4b0a ldr r3, [pc, #40] ; (800d9bc ) - 800d992: 4a05 ldr r2, [pc, #20] ; (800d9a8 ) - 800d994: 601a str r2, [r3, #0] - pxOverflowDelayedTaskList = &xDelayedTaskList2; - 800d996: 4b0a ldr r3, [pc, #40] ; (800d9c0 ) - 800d998: 4a04 ldr r2, [pc, #16] ; (800d9ac ) - 800d99a: 601a str r2, [r3, #0] -} - 800d99c: 46c0 nop ; (mov r8, r8) - 800d99e: 46bd mov sp, r7 - 800d9a0: b002 add sp, #8 - 800d9a2: bd80 pop {r7, pc} - 800d9a4: 20000be8 .word 0x20000be8 - 800d9a8: 20001048 .word 0x20001048 - 800d9ac: 2000105c .word 0x2000105c - 800d9b0: 20001078 .word 0x20001078 - 800d9b4: 2000108c .word 0x2000108c - 800d9b8: 200010a4 .word 0x200010a4 - 800d9bc: 20001070 .word 0x20001070 - 800d9c0: 20001074 .word 0x20001074 - -0800d9c4 : -/*-----------------------------------------------------------*/ - -static void prvCheckTasksWaitingTermination( void ) -{ - 800d9c4: b580 push {r7, lr} - 800d9c6: b082 sub sp, #8 - 800d9c8: af00 add r7, sp, #0 - { - TCB_t *pxTCB; - - /* uxDeletedTasksWaitingCleanUp is used to prevent taskENTER_CRITICAL() - being called too often in the idle task. */ - while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U ) - 800d9ca: e01a b.n 800da02 - { - taskENTER_CRITICAL(); - 800d9cc: f000 fea0 bl 800e710 - { - pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); /*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. */ - 800d9d0: 4b10 ldr r3, [pc, #64] ; (800da14 ) - 800d9d2: 68db ldr r3, [r3, #12] - 800d9d4: 68db ldr r3, [r3, #12] - 800d9d6: 607b str r3, [r7, #4] - ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 800d9d8: 687b ldr r3, [r7, #4] - 800d9da: 3304 adds r3, #4 - 800d9dc: 0018 movs r0, r3 - 800d9de: f7fe fc10 bl 800c202 - --uxCurrentNumberOfTasks; - 800d9e2: 4b0d ldr r3, [pc, #52] ; (800da18 ) - 800d9e4: 681b ldr r3, [r3, #0] - 800d9e6: 1e5a subs r2, r3, #1 - 800d9e8: 4b0b ldr r3, [pc, #44] ; (800da18 ) - 800d9ea: 601a str r2, [r3, #0] - --uxDeletedTasksWaitingCleanUp; - 800d9ec: 4b0b ldr r3, [pc, #44] ; (800da1c ) - 800d9ee: 681b ldr r3, [r3, #0] - 800d9f0: 1e5a subs r2, r3, #1 - 800d9f2: 4b0a ldr r3, [pc, #40] ; (800da1c ) - 800d9f4: 601a str r2, [r3, #0] - } - taskEXIT_CRITICAL(); - 800d9f6: f000 fe9d bl 800e734 - - prvDeleteTCB( pxTCB ); - 800d9fa: 687b ldr r3, [r7, #4] - 800d9fc: 0018 movs r0, r3 - 800d9fe: f000 f80f bl 800da20 - while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U ) - 800da02: 4b06 ldr r3, [pc, #24] ; (800da1c ) - 800da04: 681b ldr r3, [r3, #0] - 800da06: 2b00 cmp r3, #0 - 800da08: d1e0 bne.n 800d9cc - } - } - #endif /* INCLUDE_vTaskDelete */ -} - 800da0a: 46c0 nop ; (mov r8, r8) - 800da0c: 46c0 nop ; (mov r8, r8) - 800da0e: 46bd mov sp, r7 - 800da10: b002 add sp, #8 - 800da12: bd80 pop {r7, pc} - 800da14: 2000108c .word 0x2000108c - 800da18: 200010b8 .word 0x200010b8 - 800da1c: 200010a0 .word 0x200010a0 - -0800da20 : -/*-----------------------------------------------------------*/ - -#if ( INCLUDE_vTaskDelete == 1 ) - - static void prvDeleteTCB( TCB_t *pxTCB ) - { - 800da20: b580 push {r7, lr} - 800da22: b082 sub sp, #8 - 800da24: af00 add r7, sp, #0 - 800da26: 6078 str r0, [r7, #4] - to the task to free any memory allocated at the application level. - See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html - for additional information. */ - #if ( configUSE_NEWLIB_REENTRANT == 1 ) - { - _reclaim_reent( &( pxTCB->xNewLib_reent ) ); - 800da28: 687b ldr r3, [r7, #4] - 800da2a: 3354 adds r3, #84 ; 0x54 - 800da2c: 0018 movs r0, r3 - 800da2e: f001 f99d bl 800ed6c <_reclaim_reent> - #elif( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ - { - /* The task could have been allocated statically or dynamically, so - check what was statically allocated before trying to free the - memory. */ - if( pxTCB->ucStaticallyAllocated == tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB ) - 800da32: 687b ldr r3, [r7, #4] - 800da34: 22b9 movs r2, #185 ; 0xb9 - 800da36: 5c9b ldrb r3, [r3, r2] - 800da38: 2b00 cmp r3, #0 - 800da3a: d109 bne.n 800da50 - { - /* Both the stack and TCB were allocated dynamically, so both - must be freed. */ - vPortFree( pxTCB->pxStack ); - 800da3c: 687b ldr r3, [r7, #4] - 800da3e: 6b1b ldr r3, [r3, #48] ; 0x30 - 800da40: 0018 movs r0, r3 - 800da42: f000 ffa9 bl 800e998 - vPortFree( pxTCB ); - 800da46: 687b ldr r3, [r7, #4] - 800da48: 0018 movs r0, r3 - 800da4a: f000 ffa5 bl 800e998 - configASSERT( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB ); - mtCOVERAGE_TEST_MARKER(); - } - } - #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ - } - 800da4e: e010 b.n 800da72 - else if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_ONLY ) - 800da50: 687b ldr r3, [r7, #4] - 800da52: 22b9 movs r2, #185 ; 0xb9 - 800da54: 5c9b ldrb r3, [r3, r2] - 800da56: 2b01 cmp r3, #1 - 800da58: d104 bne.n 800da64 - vPortFree( pxTCB ); - 800da5a: 687b ldr r3, [r7, #4] - 800da5c: 0018 movs r0, r3 - 800da5e: f000 ff9b bl 800e998 - } - 800da62: e006 b.n 800da72 - configASSERT( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB ); - 800da64: 687b ldr r3, [r7, #4] - 800da66: 22b9 movs r2, #185 ; 0xb9 - 800da68: 5c9b ldrb r3, [r3, r2] - 800da6a: 2b02 cmp r3, #2 - 800da6c: d001 beq.n 800da72 - 800da6e: b672 cpsid i - 800da70: e7fe b.n 800da70 - } - 800da72: 46c0 nop ; (mov r8, r8) - 800da74: 46bd mov sp, r7 - 800da76: b002 add sp, #8 - 800da78: bd80 pop {r7, pc} - ... - -0800da7c : - -#endif /* INCLUDE_vTaskDelete */ -/*-----------------------------------------------------------*/ - -static void prvResetNextTaskUnblockTime( void ) -{ - 800da7c: b580 push {r7, lr} - 800da7e: b082 sub sp, #8 - 800da80: af00 add r7, sp, #0 -TCB_t *pxTCB; - - if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 800da82: 4b0b ldr r3, [pc, #44] ; (800dab0 ) - 800da84: 681b ldr r3, [r3, #0] - 800da86: 681b ldr r3, [r3, #0] - 800da88: 2b00 cmp r3, #0 - 800da8a: d104 bne.n 800da96 - { - /* 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; - 800da8c: 4b09 ldr r3, [pc, #36] ; (800dab4 ) - 800da8e: 2201 movs r2, #1 - 800da90: 4252 negs r2, r2 - 800da92: 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 ) ); - } -} - 800da94: e008 b.n 800daa8 - ( 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. */ - 800da96: 4b06 ldr r3, [pc, #24] ; (800dab0 ) - 800da98: 681b ldr r3, [r3, #0] - 800da9a: 68db ldr r3, [r3, #12] - 800da9c: 68db ldr r3, [r3, #12] - 800da9e: 607b str r3, [r7, #4] - xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); - 800daa0: 687b ldr r3, [r7, #4] - 800daa2: 685a ldr r2, [r3, #4] - 800daa4: 4b03 ldr r3, [pc, #12] ; (800dab4 ) - 800daa6: 601a str r2, [r3, #0] -} - 800daa8: 46c0 nop ; (mov r8, r8) - 800daaa: 46bd mov sp, r7 - 800daac: b002 add sp, #8 - 800daae: bd80 pop {r7, pc} - 800dab0: 20001070 .word 0x20001070 - 800dab4: 200010d8 .word 0x200010d8 - -0800dab8 : -/*-----------------------------------------------------------*/ - -#if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) - - TaskHandle_t xTaskGetCurrentTaskHandle( void ) - { - 800dab8: b580 push {r7, lr} - 800daba: b082 sub sp, #8 - 800dabc: af00 add r7, sp, #0 - TaskHandle_t xReturn; - - /* A critical section is not required as this is not called from - an interrupt and the current TCB will always be the same for any - individual execution thread. */ - xReturn = pxCurrentTCB; - 800dabe: 4b04 ldr r3, [pc, #16] ; (800dad0 ) - 800dac0: 681b ldr r3, [r3, #0] - 800dac2: 607b str r3, [r7, #4] - - return xReturn; - 800dac4: 687b ldr r3, [r7, #4] - } - 800dac6: 0018 movs r0, r3 - 800dac8: 46bd mov sp, r7 - 800daca: b002 add sp, #8 - 800dacc: bd80 pop {r7, pc} - 800dace: 46c0 nop ; (mov r8, r8) - 800dad0: 20000be4 .word 0x20000be4 - -0800dad4 : -/*-----------------------------------------------------------*/ - -#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) - - BaseType_t xTaskGetSchedulerState( void ) - { - 800dad4: b580 push {r7, lr} - 800dad6: b082 sub sp, #8 - 800dad8: af00 add r7, sp, #0 - BaseType_t xReturn; - - if( xSchedulerRunning == pdFALSE ) - 800dada: 4b0a ldr r3, [pc, #40] ; (800db04 ) - 800dadc: 681b ldr r3, [r3, #0] - 800dade: 2b00 cmp r3, #0 - 800dae0: d102 bne.n 800dae8 - { - xReturn = taskSCHEDULER_NOT_STARTED; - 800dae2: 2301 movs r3, #1 - 800dae4: 607b str r3, [r7, #4] - 800dae6: e008 b.n 800dafa - } - else - { - if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 800dae8: 4b07 ldr r3, [pc, #28] ; (800db08 ) - 800daea: 681b ldr r3, [r3, #0] - 800daec: 2b00 cmp r3, #0 - 800daee: d102 bne.n 800daf6 - { - xReturn = taskSCHEDULER_RUNNING; - 800daf0: 2302 movs r3, #2 - 800daf2: 607b str r3, [r7, #4] - 800daf4: e001 b.n 800dafa - } - else - { - xReturn = taskSCHEDULER_SUSPENDED; - 800daf6: 2300 movs r3, #0 - 800daf8: 607b str r3, [r7, #4] - } - } - - return xReturn; - 800dafa: 687b ldr r3, [r7, #4] - } - 800dafc: 0018 movs r0, r3 - 800dafe: 46bd mov sp, r7 - 800db00: b002 add sp, #8 - 800db02: bd80 pop {r7, pc} - 800db04: 200010c4 .word 0x200010c4 - 800db08: 200010e0 .word 0x200010e0 - -0800db0c : -/*-----------------------------------------------------------*/ - -#if ( configUSE_MUTEXES == 1 ) - - BaseType_t xTaskPriorityInherit( TaskHandle_t const pxMutexHolder ) - { - 800db0c: b580 push {r7, lr} - 800db0e: b084 sub sp, #16 - 800db10: af00 add r7, sp, #0 - 800db12: 6078 str r0, [r7, #4] - TCB_t * const pxMutexHolderTCB = pxMutexHolder; - 800db14: 687b ldr r3, [r7, #4] - 800db16: 60bb str r3, [r7, #8] - BaseType_t xReturn = pdFALSE; - 800db18: 2300 movs r3, #0 - 800db1a: 60fb str r3, [r7, #12] - - /* If the mutex was given back by an interrupt while the queue was - locked then the mutex holder might now be NULL. _RB_ Is this still - needed as interrupts can no longer use mutexes? */ - if( pxMutexHolder != NULL ) - 800db1c: 687b ldr r3, [r7, #4] - 800db1e: 2b00 cmp r3, #0 - 800db20: d051 beq.n 800dbc6 - { - /* If the holder of the mutex has a priority below the priority of - the task attempting to obtain the mutex then it will temporarily - inherit the priority of the task attempting to obtain the mutex. */ - if( pxMutexHolderTCB->uxPriority < pxCurrentTCB->uxPriority ) - 800db22: 68bb ldr r3, [r7, #8] - 800db24: 6ada ldr r2, [r3, #44] ; 0x2c - 800db26: 4b2a ldr r3, [pc, #168] ; (800dbd0 ) - 800db28: 681b ldr r3, [r3, #0] - 800db2a: 6adb ldr r3, [r3, #44] ; 0x2c - 800db2c: 429a cmp r2, r3 - 800db2e: d241 bcs.n 800dbb4 - { - /* Adjust the mutex holder state to account for its new - priority. Only reset the event list item value if the value is - not being used for anything else. */ - if( ( listGET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) - 800db30: 68bb ldr r3, [r7, #8] - 800db32: 699b ldr r3, [r3, #24] - 800db34: 2b00 cmp r3, #0 - 800db36: db06 blt.n 800db46 - { - listSET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 800db38: 4b25 ldr r3, [pc, #148] ; (800dbd0 ) - 800db3a: 681b ldr r3, [r3, #0] - 800db3c: 6adb ldr r3, [r3, #44] ; 0x2c - 800db3e: 2238 movs r2, #56 ; 0x38 - 800db40: 1ad2 subs r2, r2, r3 - 800db42: 68bb ldr r3, [r7, #8] - 800db44: 619a str r2, [r3, #24] - mtCOVERAGE_TEST_MARKER(); - } - - /* If the task being modified is in the ready state it will need - to be moved into a new list. */ - if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxMutexHolderTCB->uxPriority ] ), &( pxMutexHolderTCB->xStateListItem ) ) != pdFALSE ) - 800db46: 68bb ldr r3, [r7, #8] - 800db48: 6959 ldr r1, [r3, #20] - 800db4a: 68bb ldr r3, [r7, #8] - 800db4c: 6ada ldr r2, [r3, #44] ; 0x2c - 800db4e: 0013 movs r3, r2 - 800db50: 009b lsls r3, r3, #2 - 800db52: 189b adds r3, r3, r2 - 800db54: 009b lsls r3, r3, #2 - 800db56: 4a1f ldr r2, [pc, #124] ; (800dbd4 ) - 800db58: 189b adds r3, r3, r2 - 800db5a: 4299 cmp r1, r3 - 800db5c: d122 bne.n 800dba4 - { - if( uxListRemove( &( pxMutexHolderTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) - 800db5e: 68bb ldr r3, [r7, #8] - 800db60: 3304 adds r3, #4 - 800db62: 0018 movs r0, r3 - 800db64: f7fe fb4d bl 800c202 - { - mtCOVERAGE_TEST_MARKER(); - } - - /* Inherit the priority before being moved into the new list. */ - pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority; - 800db68: 4b19 ldr r3, [pc, #100] ; (800dbd0 ) - 800db6a: 681b ldr r3, [r3, #0] - 800db6c: 6ada ldr r2, [r3, #44] ; 0x2c - 800db6e: 68bb ldr r3, [r7, #8] - 800db70: 62da str r2, [r3, #44] ; 0x2c - prvAddTaskToReadyList( pxMutexHolderTCB ); - 800db72: 68bb ldr r3, [r7, #8] - 800db74: 6ada ldr r2, [r3, #44] ; 0x2c - 800db76: 4b18 ldr r3, [pc, #96] ; (800dbd8 ) - 800db78: 681b ldr r3, [r3, #0] - 800db7a: 429a cmp r2, r3 - 800db7c: d903 bls.n 800db86 - 800db7e: 68bb ldr r3, [r7, #8] - 800db80: 6ada ldr r2, [r3, #44] ; 0x2c - 800db82: 4b15 ldr r3, [pc, #84] ; (800dbd8 ) - 800db84: 601a str r2, [r3, #0] - 800db86: 68bb ldr r3, [r7, #8] - 800db88: 6ada ldr r2, [r3, #44] ; 0x2c - 800db8a: 0013 movs r3, r2 - 800db8c: 009b lsls r3, r3, #2 - 800db8e: 189b adds r3, r3, r2 - 800db90: 009b lsls r3, r3, #2 - 800db92: 4a10 ldr r2, [pc, #64] ; (800dbd4 ) - 800db94: 189a adds r2, r3, r2 - 800db96: 68bb ldr r3, [r7, #8] - 800db98: 3304 adds r3, #4 - 800db9a: 0019 movs r1, r3 - 800db9c: 0010 movs r0, r2 - 800db9e: f7fe fad8 bl 800c152 - 800dba2: e004 b.n 800dbae - } - else - { - /* Just inherit the priority. */ - pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority; - 800dba4: 4b0a ldr r3, [pc, #40] ; (800dbd0 ) - 800dba6: 681b ldr r3, [r3, #0] - 800dba8: 6ada ldr r2, [r3, #44] ; 0x2c - 800dbaa: 68bb ldr r3, [r7, #8] - 800dbac: 62da str r2, [r3, #44] ; 0x2c - } - - traceTASK_PRIORITY_INHERIT( pxMutexHolderTCB, pxCurrentTCB->uxPriority ); - - /* Inheritance occurred. */ - xReturn = pdTRUE; - 800dbae: 2301 movs r3, #1 - 800dbb0: 60fb str r3, [r7, #12] - 800dbb2: e008 b.n 800dbc6 - } - else - { - if( pxMutexHolderTCB->uxBasePriority < pxCurrentTCB->uxPriority ) - 800dbb4: 68bb ldr r3, [r7, #8] - 800dbb6: 6cda ldr r2, [r3, #76] ; 0x4c - 800dbb8: 4b05 ldr r3, [pc, #20] ; (800dbd0 ) - 800dbba: 681b ldr r3, [r3, #0] - 800dbbc: 6adb ldr r3, [r3, #44] ; 0x2c - 800dbbe: 429a cmp r2, r3 - 800dbc0: d201 bcs.n 800dbc6 - current priority of the mutex holder is not lower than the - priority of the task attempting to take the mutex. - Therefore the mutex holder must have already inherited a - priority, but inheritance would have occurred if that had - not been the case. */ - xReturn = pdTRUE; - 800dbc2: 2301 movs r3, #1 - 800dbc4: 60fb str r3, [r7, #12] - else - { - mtCOVERAGE_TEST_MARKER(); - } - - return xReturn; - 800dbc6: 68fb ldr r3, [r7, #12] - } - 800dbc8: 0018 movs r0, r3 - 800dbca: 46bd mov sp, r7 - 800dbcc: b004 add sp, #16 - 800dbce: bd80 pop {r7, pc} - 800dbd0: 20000be4 .word 0x20000be4 - 800dbd4: 20000be8 .word 0x20000be8 - 800dbd8: 200010c0 .word 0x200010c0 - -0800dbdc : -/*-----------------------------------------------------------*/ - -#if ( configUSE_MUTEXES == 1 ) - - BaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder ) - { - 800dbdc: b580 push {r7, lr} - 800dbde: b084 sub sp, #16 - 800dbe0: af00 add r7, sp, #0 - 800dbe2: 6078 str r0, [r7, #4] - TCB_t * const pxTCB = pxMutexHolder; - 800dbe4: 687b ldr r3, [r7, #4] - 800dbe6: 60bb str r3, [r7, #8] - BaseType_t xReturn = pdFALSE; - 800dbe8: 2300 movs r3, #0 - 800dbea: 60fb str r3, [r7, #12] - - if( pxMutexHolder != NULL ) - 800dbec: 687b ldr r3, [r7, #4] - 800dbee: 2b00 cmp r3, #0 - 800dbf0: d044 beq.n 800dc7c - { - /* A task can only have an inherited priority if it holds the mutex. - If the mutex is held by a task then it cannot be given from an - interrupt, and if a mutex is given by the holding task then it must - be the running state task. */ - configASSERT( pxTCB == pxCurrentTCB ); - 800dbf2: 4b25 ldr r3, [pc, #148] ; (800dc88 ) - 800dbf4: 681b ldr r3, [r3, #0] - 800dbf6: 68ba ldr r2, [r7, #8] - 800dbf8: 429a cmp r2, r3 - 800dbfa: d001 beq.n 800dc00 - 800dbfc: b672 cpsid i - 800dbfe: e7fe b.n 800dbfe - configASSERT( pxTCB->uxMutexesHeld ); - 800dc00: 68bb ldr r3, [r7, #8] - 800dc02: 6d1b ldr r3, [r3, #80] ; 0x50 - 800dc04: 2b00 cmp r3, #0 - 800dc06: d101 bne.n 800dc0c - 800dc08: b672 cpsid i - 800dc0a: e7fe b.n 800dc0a - ( pxTCB->uxMutexesHeld )--; - 800dc0c: 68bb ldr r3, [r7, #8] - 800dc0e: 6d1b ldr r3, [r3, #80] ; 0x50 - 800dc10: 1e5a subs r2, r3, #1 - 800dc12: 68bb ldr r3, [r7, #8] - 800dc14: 651a str r2, [r3, #80] ; 0x50 - - /* Has the holder of the mutex inherited the priority of another - task? */ - if( pxTCB->uxPriority != pxTCB->uxBasePriority ) - 800dc16: 68bb ldr r3, [r7, #8] - 800dc18: 6ada ldr r2, [r3, #44] ; 0x2c - 800dc1a: 68bb ldr r3, [r7, #8] - 800dc1c: 6cdb ldr r3, [r3, #76] ; 0x4c - 800dc1e: 429a cmp r2, r3 - 800dc20: d02c beq.n 800dc7c - { - /* Only disinherit if no other mutexes are held. */ - if( pxTCB->uxMutexesHeld == ( UBaseType_t ) 0 ) - 800dc22: 68bb ldr r3, [r7, #8] - 800dc24: 6d1b ldr r3, [r3, #80] ; 0x50 - 800dc26: 2b00 cmp r3, #0 - 800dc28: d128 bne.n 800dc7c - /* A task can only have an inherited priority if it holds - the mutex. If the mutex is held by a task then it cannot be - given from an interrupt, and if a mutex is given by the - holding task then it must be the running state task. Remove - the holding task from the ready/delayed list. */ - if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) - 800dc2a: 68bb ldr r3, [r7, #8] - 800dc2c: 3304 adds r3, #4 - 800dc2e: 0018 movs r0, r3 - 800dc30: f7fe fae7 bl 800c202 - } - - /* Disinherit the priority before adding the task into the - new ready list. */ - traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority ); - pxTCB->uxPriority = pxTCB->uxBasePriority; - 800dc34: 68bb ldr r3, [r7, #8] - 800dc36: 6cda ldr r2, [r3, #76] ; 0x4c - 800dc38: 68bb ldr r3, [r7, #8] - 800dc3a: 62da str r2, [r3, #44] ; 0x2c - - /* Reset the event list item value. It cannot be in use for - any other purpose if this task is running, and it must be - running to give back the mutex. */ - listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 800dc3c: 68bb ldr r3, [r7, #8] - 800dc3e: 6adb ldr r3, [r3, #44] ; 0x2c - 800dc40: 2238 movs r2, #56 ; 0x38 - 800dc42: 1ad2 subs r2, r2, r3 - 800dc44: 68bb ldr r3, [r7, #8] - 800dc46: 619a str r2, [r3, #24] - prvAddTaskToReadyList( pxTCB ); - 800dc48: 68bb ldr r3, [r7, #8] - 800dc4a: 6ada ldr r2, [r3, #44] ; 0x2c - 800dc4c: 4b0f ldr r3, [pc, #60] ; (800dc8c ) - 800dc4e: 681b ldr r3, [r3, #0] - 800dc50: 429a cmp r2, r3 - 800dc52: d903 bls.n 800dc5c - 800dc54: 68bb ldr r3, [r7, #8] - 800dc56: 6ada ldr r2, [r3, #44] ; 0x2c - 800dc58: 4b0c ldr r3, [pc, #48] ; (800dc8c ) - 800dc5a: 601a str r2, [r3, #0] - 800dc5c: 68bb ldr r3, [r7, #8] - 800dc5e: 6ada ldr r2, [r3, #44] ; 0x2c - 800dc60: 0013 movs r3, r2 - 800dc62: 009b lsls r3, r3, #2 - 800dc64: 189b adds r3, r3, r2 - 800dc66: 009b lsls r3, r3, #2 - 800dc68: 4a09 ldr r2, [pc, #36] ; (800dc90 ) - 800dc6a: 189a adds r2, r3, r2 - 800dc6c: 68bb ldr r3, [r7, #8] - 800dc6e: 3304 adds r3, #4 - 800dc70: 0019 movs r1, r3 - 800dc72: 0010 movs r0, r2 - 800dc74: f7fe fa6d bl 800c152 - in an order different to that in which they were taken. - If a context switch did not occur when the first mutex was - returned, even if a task was waiting on it, then a context - switch should occur when the last mutex is returned whether - a task is waiting on it or not. */ - xReturn = pdTRUE; - 800dc78: 2301 movs r3, #1 - 800dc7a: 60fb str r3, [r7, #12] - else - { - mtCOVERAGE_TEST_MARKER(); - } - - return xReturn; - 800dc7c: 68fb ldr r3, [r7, #12] - } - 800dc7e: 0018 movs r0, r3 - 800dc80: 46bd mov sp, r7 - 800dc82: b004 add sp, #16 - 800dc84: bd80 pop {r7, pc} - 800dc86: 46c0 nop ; (mov r8, r8) - 800dc88: 20000be4 .word 0x20000be4 - 800dc8c: 200010c0 .word 0x200010c0 - 800dc90: 20000be8 .word 0x20000be8 - -0800dc94 : -/*-----------------------------------------------------------*/ - -#if ( configUSE_MUTEXES == 1 ) - - void vTaskPriorityDisinheritAfterTimeout( TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask ) - { - 800dc94: b580 push {r7, lr} - 800dc96: b086 sub sp, #24 - 800dc98: af00 add r7, sp, #0 - 800dc9a: 6078 str r0, [r7, #4] - 800dc9c: 6039 str r1, [r7, #0] - TCB_t * const pxTCB = pxMutexHolder; - 800dc9e: 687b ldr r3, [r7, #4] - 800dca0: 613b str r3, [r7, #16] - UBaseType_t uxPriorityUsedOnEntry, uxPriorityToUse; - const UBaseType_t uxOnlyOneMutexHeld = ( UBaseType_t ) 1; - 800dca2: 2301 movs r3, #1 - 800dca4: 60fb str r3, [r7, #12] - - if( pxMutexHolder != NULL ) - 800dca6: 687b ldr r3, [r7, #4] - 800dca8: 2b00 cmp r3, #0 - 800dcaa: d058 beq.n 800dd5e - { - /* If pxMutexHolder is not NULL then the holder must hold at least - one mutex. */ - configASSERT( pxTCB->uxMutexesHeld ); - 800dcac: 693b ldr r3, [r7, #16] - 800dcae: 6d1b ldr r3, [r3, #80] ; 0x50 - 800dcb0: 2b00 cmp r3, #0 - 800dcb2: d101 bne.n 800dcb8 - 800dcb4: b672 cpsid i - 800dcb6: e7fe b.n 800dcb6 - - /* Determine the priority to which the priority of the task that - holds the mutex should be set. This will be the greater of the - holding task's base priority and the priority of the highest - priority task that is waiting to obtain the mutex. */ - if( pxTCB->uxBasePriority < uxHighestPriorityWaitingTask ) - 800dcb8: 693b ldr r3, [r7, #16] - 800dcba: 6cdb ldr r3, [r3, #76] ; 0x4c - 800dcbc: 683a ldr r2, [r7, #0] - 800dcbe: 429a cmp r2, r3 - 800dcc0: d902 bls.n 800dcc8 - { - uxPriorityToUse = uxHighestPriorityWaitingTask; - 800dcc2: 683b ldr r3, [r7, #0] - 800dcc4: 617b str r3, [r7, #20] - 800dcc6: e002 b.n 800dcce - } - else - { - uxPriorityToUse = pxTCB->uxBasePriority; - 800dcc8: 693b ldr r3, [r7, #16] - 800dcca: 6cdb ldr r3, [r3, #76] ; 0x4c - 800dccc: 617b str r3, [r7, #20] - } - - /* Does the priority need to change? */ - if( pxTCB->uxPriority != uxPriorityToUse ) - 800dcce: 693b ldr r3, [r7, #16] - 800dcd0: 6adb ldr r3, [r3, #44] ; 0x2c - 800dcd2: 697a ldr r2, [r7, #20] - 800dcd4: 429a cmp r2, r3 - 800dcd6: d042 beq.n 800dd5e - { - /* Only disinherit if no other mutexes are held. This is a - simplification in the priority inheritance implementation. If - the task that holds the mutex is also holding other mutexes then - the other mutexes may have caused the priority inheritance. */ - if( pxTCB->uxMutexesHeld == uxOnlyOneMutexHeld ) - 800dcd8: 693b ldr r3, [r7, #16] - 800dcda: 6d1b ldr r3, [r3, #80] ; 0x50 - 800dcdc: 68fa ldr r2, [r7, #12] - 800dcde: 429a cmp r2, r3 - 800dce0: d13d bne.n 800dd5e - { - /* If a task has timed out because it already holds the - mutex it was trying to obtain then it cannot of inherited - its own priority. */ - configASSERT( pxTCB != pxCurrentTCB ); - 800dce2: 4b21 ldr r3, [pc, #132] ; (800dd68 ) - 800dce4: 681b ldr r3, [r3, #0] - 800dce6: 693a ldr r2, [r7, #16] - 800dce8: 429a cmp r2, r3 - 800dcea: d101 bne.n 800dcf0 - 800dcec: b672 cpsid i - 800dcee: e7fe b.n 800dcee - - /* Disinherit the priority, remembering the previous - priority to facilitate determining the subject task's - state. */ - traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority ); - uxPriorityUsedOnEntry = pxTCB->uxPriority; - 800dcf0: 693b ldr r3, [r7, #16] - 800dcf2: 6adb ldr r3, [r3, #44] ; 0x2c - 800dcf4: 60bb str r3, [r7, #8] - pxTCB->uxPriority = uxPriorityToUse; - 800dcf6: 693b ldr r3, [r7, #16] - 800dcf8: 697a ldr r2, [r7, #20] - 800dcfa: 62da str r2, [r3, #44] ; 0x2c - - /* Only reset the event list item value if the value is not - being used for anything else. */ - if( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) - 800dcfc: 693b ldr r3, [r7, #16] - 800dcfe: 699b ldr r3, [r3, #24] - 800dd00: 2b00 cmp r3, #0 - 800dd02: db04 blt.n 800dd0e - { - listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriorityToUse ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 800dd04: 697b ldr r3, [r7, #20] - 800dd06: 2238 movs r2, #56 ; 0x38 - 800dd08: 1ad2 subs r2, r2, r3 - 800dd0a: 693b ldr r3, [r7, #16] - 800dd0c: 619a str r2, [r3, #24] - then the task that holds the mutex could be in either the - Ready, Blocked or Suspended states. Only remove the task - from its current state list if it is in the Ready state as - the task's priority is going to change and there is one - Ready list per priority. */ - if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxPriorityUsedOnEntry ] ), &( pxTCB->xStateListItem ) ) != pdFALSE ) - 800dd0e: 693b ldr r3, [r7, #16] - 800dd10: 6959 ldr r1, [r3, #20] - 800dd12: 68ba ldr r2, [r7, #8] - 800dd14: 0013 movs r3, r2 - 800dd16: 009b lsls r3, r3, #2 - 800dd18: 189b adds r3, r3, r2 - 800dd1a: 009b lsls r3, r3, #2 - 800dd1c: 4a13 ldr r2, [pc, #76] ; (800dd6c ) - 800dd1e: 189b adds r3, r3, r2 - 800dd20: 4299 cmp r1, r3 - 800dd22: d11c bne.n 800dd5e - { - if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) - 800dd24: 693b ldr r3, [r7, #16] - 800dd26: 3304 adds r3, #4 - 800dd28: 0018 movs r0, r3 - 800dd2a: f7fe fa6a bl 800c202 - else - { - mtCOVERAGE_TEST_MARKER(); - } - - prvAddTaskToReadyList( pxTCB ); - 800dd2e: 693b ldr r3, [r7, #16] - 800dd30: 6ada ldr r2, [r3, #44] ; 0x2c - 800dd32: 4b0f ldr r3, [pc, #60] ; (800dd70 ) - 800dd34: 681b ldr r3, [r3, #0] - 800dd36: 429a cmp r2, r3 - 800dd38: d903 bls.n 800dd42 - 800dd3a: 693b ldr r3, [r7, #16] - 800dd3c: 6ada ldr r2, [r3, #44] ; 0x2c - 800dd3e: 4b0c ldr r3, [pc, #48] ; (800dd70 ) - 800dd40: 601a str r2, [r3, #0] - 800dd42: 693b ldr r3, [r7, #16] - 800dd44: 6ada ldr r2, [r3, #44] ; 0x2c - 800dd46: 0013 movs r3, r2 - 800dd48: 009b lsls r3, r3, #2 - 800dd4a: 189b adds r3, r3, r2 - 800dd4c: 009b lsls r3, r3, #2 - 800dd4e: 4a07 ldr r2, [pc, #28] ; (800dd6c ) - 800dd50: 189a adds r2, r3, r2 - 800dd52: 693b ldr r3, [r7, #16] - 800dd54: 3304 adds r3, #4 - 800dd56: 0019 movs r1, r3 - 800dd58: 0010 movs r0, r2 - 800dd5a: f7fe f9fa bl 800c152 - } - else - { - mtCOVERAGE_TEST_MARKER(); - } - } - 800dd5e: 46c0 nop ; (mov r8, r8) - 800dd60: 46bd mov sp, r7 - 800dd62: b006 add sp, #24 - 800dd64: bd80 pop {r7, pc} - 800dd66: 46c0 nop ; (mov r8, r8) - 800dd68: 20000be4 .word 0x20000be4 - 800dd6c: 20000be8 .word 0x20000be8 - 800dd70: 200010c0 .word 0x200010c0 - -0800dd74 : -/*-----------------------------------------------------------*/ - -#if ( configUSE_MUTEXES == 1 ) - - TaskHandle_t pvTaskIncrementMutexHeldCount( void ) - { - 800dd74: b580 push {r7, lr} - 800dd76: af00 add r7, sp, #0 - /* If xSemaphoreCreateMutex() is called before any tasks have been created - then pxCurrentTCB will be NULL. */ - if( pxCurrentTCB != NULL ) - 800dd78: 4b06 ldr r3, [pc, #24] ; (800dd94 ) - 800dd7a: 681b ldr r3, [r3, #0] - 800dd7c: 2b00 cmp r3, #0 - 800dd7e: d004 beq.n 800dd8a - { - ( pxCurrentTCB->uxMutexesHeld )++; - 800dd80: 4b04 ldr r3, [pc, #16] ; (800dd94 ) - 800dd82: 681b ldr r3, [r3, #0] - 800dd84: 6d1a ldr r2, [r3, #80] ; 0x50 - 800dd86: 3201 adds r2, #1 - 800dd88: 651a str r2, [r3, #80] ; 0x50 - } - - return pxCurrentTCB; - 800dd8a: 4b02 ldr r3, [pc, #8] ; (800dd94 ) - 800dd8c: 681b ldr r3, [r3, #0] - } - 800dd8e: 0018 movs r0, r3 - 800dd90: 46bd mov sp, r7 - 800dd92: bd80 pop {r7, pc} - 800dd94: 20000be4 .word 0x20000be4 - -0800dd98 : - -#endif -/*-----------------------------------------------------------*/ - -static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) -{ - 800dd98: b580 push {r7, lr} - 800dd9a: b084 sub sp, #16 - 800dd9c: af00 add r7, sp, #0 - 800dd9e: 6078 str r0, [r7, #4] - 800dda0: 6039 str r1, [r7, #0] -TickType_t xTimeToWake; -const TickType_t xConstTickCount = xTickCount; - 800dda2: 4b21 ldr r3, [pc, #132] ; (800de28 ) - 800dda4: 681b ldr r3, [r3, #0] - 800dda6: 60fb str r3, [r7, #12] - } - #endif - - /* Remove the task from the ready list before adding it to the blocked list - as the same list item is used for both lists. */ - if( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) - 800dda8: 4b20 ldr r3, [pc, #128] ; (800de2c ) - 800ddaa: 681b ldr r3, [r3, #0] - 800ddac: 3304 adds r3, #4 - 800ddae: 0018 movs r0, r3 - 800ddb0: f7fe fa27 bl 800c202 - mtCOVERAGE_TEST_MARKER(); - } - - #if ( INCLUDE_vTaskSuspend == 1 ) - { - if( ( xTicksToWait == portMAX_DELAY ) && ( xCanBlockIndefinitely != pdFALSE ) ) - 800ddb4: 687b ldr r3, [r7, #4] - 800ddb6: 3301 adds r3, #1 - 800ddb8: d10b bne.n 800ddd2 - 800ddba: 683b ldr r3, [r7, #0] - 800ddbc: 2b00 cmp r3, #0 - 800ddbe: d008 beq.n 800ddd2 - { - /* Add the task to the suspended task list instead of a delayed task - list to ensure it is not woken by a timing event. It will block - indefinitely. */ - vListInsertEnd( &xSuspendedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 800ddc0: 4b1a ldr r3, [pc, #104] ; (800de2c ) - 800ddc2: 681b ldr r3, [r3, #0] - 800ddc4: 1d1a adds r2, r3, #4 - 800ddc6: 4b1a ldr r3, [pc, #104] ; (800de30 ) - 800ddc8: 0011 movs r1, r2 - 800ddca: 0018 movs r0, r3 - 800ddcc: f7fe f9c1 bl 800c152 - - /* Avoid compiler warning when INCLUDE_vTaskSuspend is not 1. */ - ( void ) xCanBlockIndefinitely; - } - #endif /* INCLUDE_vTaskSuspend */ -} - 800ddd0: e026 b.n 800de20 - xTimeToWake = xConstTickCount + xTicksToWait; - 800ddd2: 68fa ldr r2, [r7, #12] - 800ddd4: 687b ldr r3, [r7, #4] - 800ddd6: 18d3 adds r3, r2, r3 - 800ddd8: 60bb str r3, [r7, #8] - listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake ); - 800ddda: 4b14 ldr r3, [pc, #80] ; (800de2c ) - 800dddc: 681b ldr r3, [r3, #0] - 800ddde: 68ba ldr r2, [r7, #8] - 800dde0: 605a str r2, [r3, #4] - if( xTimeToWake < xConstTickCount ) - 800dde2: 68ba ldr r2, [r7, #8] - 800dde4: 68fb ldr r3, [r7, #12] - 800dde6: 429a cmp r2, r3 - 800dde8: d209 bcs.n 800ddfe - vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 800ddea: 4b12 ldr r3, [pc, #72] ; (800de34 ) - 800ddec: 681a ldr r2, [r3, #0] - 800ddee: 4b0f ldr r3, [pc, #60] ; (800de2c ) - 800ddf0: 681b ldr r3, [r3, #0] - 800ddf2: 3304 adds r3, #4 - 800ddf4: 0019 movs r1, r3 - 800ddf6: 0010 movs r0, r2 - 800ddf8: f7fe f9cd bl 800c196 -} - 800ddfc: e010 b.n 800de20 - vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 800ddfe: 4b0e ldr r3, [pc, #56] ; (800de38 ) - 800de00: 681a ldr r2, [r3, #0] - 800de02: 4b0a ldr r3, [pc, #40] ; (800de2c ) - 800de04: 681b ldr r3, [r3, #0] - 800de06: 3304 adds r3, #4 - 800de08: 0019 movs r1, r3 - 800de0a: 0010 movs r0, r2 - 800de0c: f7fe f9c3 bl 800c196 - if( xTimeToWake < xNextTaskUnblockTime ) - 800de10: 4b0a ldr r3, [pc, #40] ; (800de3c ) - 800de12: 681b ldr r3, [r3, #0] - 800de14: 68ba ldr r2, [r7, #8] - 800de16: 429a cmp r2, r3 - 800de18: d202 bcs.n 800de20 - xNextTaskUnblockTime = xTimeToWake; - 800de1a: 4b08 ldr r3, [pc, #32] ; (800de3c ) - 800de1c: 68ba ldr r2, [r7, #8] - 800de1e: 601a str r2, [r3, #0] -} - 800de20: 46c0 nop ; (mov r8, r8) - 800de22: 46bd mov sp, r7 - 800de24: b004 add sp, #16 - 800de26: bd80 pop {r7, pc} - 800de28: 200010bc .word 0x200010bc - 800de2c: 20000be4 .word 0x20000be4 - 800de30: 200010a4 .word 0x200010a4 - 800de34: 20001074 .word 0x20001074 - 800de38: 20001070 .word 0x20001070 - 800de3c: 200010d8 .word 0x200010d8 - -0800de40 : - TimerCallbackFunction_t pxCallbackFunction, - Timer_t *pxNewTimer ) PRIVILEGED_FUNCTION; -/*-----------------------------------------------------------*/ - -BaseType_t xTimerCreateTimerTask( void ) -{ - 800de40: b590 push {r4, r7, lr} - 800de42: b089 sub sp, #36 ; 0x24 - 800de44: af04 add r7, sp, #16 -BaseType_t xReturn = pdFAIL; - 800de46: 2300 movs r3, #0 - 800de48: 60fb str r3, [r7, #12] - - /* This function is called when the scheduler is started if - configUSE_TIMERS is set to 1. Check that the infrastructure used by the - timer service task has been created/initialised. If timers have already - been created then the initialisation will already have been performed. */ - prvCheckForValidListAndQueue(); - 800de4a: f000 fb4b bl 800e4e4 - - if( xTimerQueue != NULL ) - 800de4e: 4b17 ldr r3, [pc, #92] ; (800deac ) - 800de50: 681b ldr r3, [r3, #0] - 800de52: 2b00 cmp r3, #0 - 800de54: d020 beq.n 800de98 - { - #if( configSUPPORT_STATIC_ALLOCATION == 1 ) - { - StaticTask_t *pxTimerTaskTCBBuffer = NULL; - 800de56: 2300 movs r3, #0 - 800de58: 60bb str r3, [r7, #8] - StackType_t *pxTimerTaskStackBuffer = NULL; - 800de5a: 2300 movs r3, #0 - 800de5c: 607b str r3, [r7, #4] - uint32_t ulTimerTaskStackSize; - - vApplicationGetTimerTaskMemory( &pxTimerTaskTCBBuffer, &pxTimerTaskStackBuffer, &ulTimerTaskStackSize ); - 800de5e: 003a movs r2, r7 - 800de60: 1d39 adds r1, r7, #4 - 800de62: 2308 movs r3, #8 - 800de64: 18fb adds r3, r7, r3 - 800de66: 0018 movs r0, r3 - 800de68: f7fe f932 bl 800c0d0 - xTimerTaskHandle = xTaskCreateStatic( prvTimerTask, - 800de6c: 683c ldr r4, [r7, #0] - 800de6e: 687b ldr r3, [r7, #4] - 800de70: 68ba ldr r2, [r7, #8] - 800de72: 490f ldr r1, [pc, #60] ; (800deb0 ) - 800de74: 480f ldr r0, [pc, #60] ; (800deb4 ) - 800de76: 9202 str r2, [sp, #8] - 800de78: 9301 str r3, [sp, #4] - 800de7a: 2302 movs r3, #2 - 800de7c: 9300 str r3, [sp, #0] - 800de7e: 2300 movs r3, #0 - 800de80: 0022 movs r2, r4 - 800de82: f7ff f870 bl 800cf66 - 800de86: 0002 movs r2, r0 - 800de88: 4b0b ldr r3, [pc, #44] ; (800deb8 ) - 800de8a: 601a str r2, [r3, #0] - NULL, - ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, - pxTimerTaskStackBuffer, - pxTimerTaskTCBBuffer ); - - if( xTimerTaskHandle != NULL ) - 800de8c: 4b0a ldr r3, [pc, #40] ; (800deb8 ) - 800de8e: 681b ldr r3, [r3, #0] - 800de90: 2b00 cmp r3, #0 - 800de92: d001 beq.n 800de98 - { - xReturn = pdPASS; - 800de94: 2301 movs r3, #1 - 800de96: 60fb str r3, [r7, #12] - else - { - mtCOVERAGE_TEST_MARKER(); - } - - configASSERT( xReturn ); - 800de98: 68fb ldr r3, [r7, #12] - 800de9a: 2b00 cmp r3, #0 - 800de9c: d101 bne.n 800dea2 - 800de9e: b672 cpsid i - 800dea0: e7fe b.n 800dea0 - return xReturn; - 800dea2: 68fb ldr r3, [r7, #12] -} - 800dea4: 0018 movs r0, r3 - 800dea6: 46bd mov sp, r7 - 800dea8: b005 add sp, #20 - 800deaa: bd90 pop {r4, r7, pc} - 800deac: 20001114 .word 0x20001114 - 800deb0: 0800f79c .word 0x0800f79c - 800deb4: 0800e0dd .word 0x0800e0dd - 800deb8: 20001118 .word 0x20001118 - -0800debc : - TimerHandle_t xTimerCreate( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ - const TickType_t xTimerPeriodInTicks, - const UBaseType_t uxAutoReload, - void * const pvTimerID, - TimerCallbackFunction_t pxCallbackFunction ) - { - 800debc: b590 push {r4, r7, lr} - 800debe: b089 sub sp, #36 ; 0x24 - 800dec0: af02 add r7, sp, #8 - 800dec2: 60f8 str r0, [r7, #12] - 800dec4: 60b9 str r1, [r7, #8] - 800dec6: 607a str r2, [r7, #4] - 800dec8: 603b str r3, [r7, #0] - Timer_t *pxNewTimer; - - pxNewTimer = ( Timer_t * ) pvPortMalloc( sizeof( Timer_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of Timer_t is always a pointer to the timer's mame. */ - 800deca: 202c movs r0, #44 ; 0x2c - 800decc: f000 fcb8 bl 800e840 - 800ded0: 0003 movs r3, r0 - 800ded2: 617b str r3, [r7, #20] - - if( pxNewTimer != NULL ) - 800ded4: 697b ldr r3, [r7, #20] - 800ded6: 2b00 cmp r3, #0 - 800ded8: d00e beq.n 800def8 - { - /* Status is thus far zero as the timer is not created statically - and has not been started. The auto-reload bit may get set in - prvInitialiseNewTimer. */ - pxNewTimer->ucStatus = 0x00; - 800deda: 697b ldr r3, [r7, #20] - 800dedc: 2228 movs r2, #40 ; 0x28 - 800dede: 2100 movs r1, #0 - 800dee0: 5499 strb r1, [r3, r2] - prvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer ); - 800dee2: 683c ldr r4, [r7, #0] - 800dee4: 687a ldr r2, [r7, #4] - 800dee6: 68b9 ldr r1, [r7, #8] - 800dee8: 68f8 ldr r0, [r7, #12] - 800deea: 697b ldr r3, [r7, #20] - 800deec: 9301 str r3, [sp, #4] - 800deee: 6abb ldr r3, [r7, #40] ; 0x28 - 800def0: 9300 str r3, [sp, #0] - 800def2: 0023 movs r3, r4 - 800def4: f000 f832 bl 800df5c - } - - return pxNewTimer; - 800def8: 697b ldr r3, [r7, #20] - } - 800defa: 0018 movs r0, r3 - 800defc: 46bd mov sp, r7 - 800defe: b007 add sp, #28 - 800df00: bd90 pop {r4, r7, pc} - -0800df02 : - const TickType_t xTimerPeriodInTicks, - const UBaseType_t uxAutoReload, - void * const pvTimerID, - TimerCallbackFunction_t pxCallbackFunction, - StaticTimer_t *pxTimerBuffer ) - { - 800df02: b590 push {r4, r7, lr} - 800df04: b089 sub sp, #36 ; 0x24 - 800df06: af02 add r7, sp, #8 - 800df08: 60f8 str r0, [r7, #12] - 800df0a: 60b9 str r1, [r7, #8] - 800df0c: 607a str r2, [r7, #4] - 800df0e: 603b str r3, [r7, #0] - #if( configASSERT_DEFINED == 1 ) - { - /* Sanity check that the size of the structure used to declare a - variable of type StaticTimer_t equals the size of the real timer - structure. */ - volatile size_t xSize = sizeof( StaticTimer_t ); - 800df10: 232c movs r3, #44 ; 0x2c - 800df12: 613b str r3, [r7, #16] - configASSERT( xSize == sizeof( Timer_t ) ); - 800df14: 693b ldr r3, [r7, #16] - 800df16: 2b2c cmp r3, #44 ; 0x2c - 800df18: d001 beq.n 800df1e - 800df1a: b672 cpsid i - 800df1c: e7fe b.n 800df1c - ( void ) xSize; /* Keeps lint quiet when configASSERT() is not defined. */ - 800df1e: 693b ldr r3, [r7, #16] - } - #endif /* configASSERT_DEFINED */ - - /* A pointer to a StaticTimer_t structure MUST be provided, use it. */ - configASSERT( pxTimerBuffer ); - 800df20: 6afb ldr r3, [r7, #44] ; 0x2c - 800df22: 2b00 cmp r3, #0 - 800df24: d101 bne.n 800df2a - 800df26: b672 cpsid i - 800df28: e7fe b.n 800df28 - pxNewTimer = ( Timer_t * ) pxTimerBuffer; /*lint !e740 !e9087 StaticTimer_t is a pointer to a Timer_t, so guaranteed to be aligned and sized correctly (checked by an assert()), so this is safe. */ - 800df2a: 6afb ldr r3, [r7, #44] ; 0x2c - 800df2c: 617b str r3, [r7, #20] - - if( pxNewTimer != NULL ) - 800df2e: 697b ldr r3, [r7, #20] - 800df30: 2b00 cmp r3, #0 - 800df32: d00e beq.n 800df52 - { - /* Timers can be created statically or dynamically so note this - timer was created statically in case it is later deleted. The - auto-reload bit may get set in prvInitialiseNewTimer(). */ - pxNewTimer->ucStatus = tmrSTATUS_IS_STATICALLY_ALLOCATED; - 800df34: 697b ldr r3, [r7, #20] - 800df36: 2228 movs r2, #40 ; 0x28 - 800df38: 2102 movs r1, #2 - 800df3a: 5499 strb r1, [r3, r2] - - prvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer ); - 800df3c: 683c ldr r4, [r7, #0] - 800df3e: 687a ldr r2, [r7, #4] - 800df40: 68b9 ldr r1, [r7, #8] - 800df42: 68f8 ldr r0, [r7, #12] - 800df44: 697b ldr r3, [r7, #20] - 800df46: 9301 str r3, [sp, #4] - 800df48: 6abb ldr r3, [r7, #40] ; 0x28 - 800df4a: 9300 str r3, [sp, #0] - 800df4c: 0023 movs r3, r4 - 800df4e: f000 f805 bl 800df5c - } - - return pxNewTimer; - 800df52: 697b ldr r3, [r7, #20] - } - 800df54: 0018 movs r0, r3 - 800df56: 46bd mov sp, r7 - 800df58: b007 add sp, #28 - 800df5a: bd90 pop {r4, r7, pc} - -0800df5c : - const TickType_t xTimerPeriodInTicks, - const UBaseType_t uxAutoReload, - void * const pvTimerID, - TimerCallbackFunction_t pxCallbackFunction, - Timer_t *pxNewTimer ) -{ - 800df5c: b580 push {r7, lr} - 800df5e: b084 sub sp, #16 - 800df60: af00 add r7, sp, #0 - 800df62: 60f8 str r0, [r7, #12] - 800df64: 60b9 str r1, [r7, #8] - 800df66: 607a str r2, [r7, #4] - 800df68: 603b str r3, [r7, #0] - /* 0 is not a valid value for xTimerPeriodInTicks. */ - configASSERT( ( xTimerPeriodInTicks > 0 ) ); - 800df6a: 68bb ldr r3, [r7, #8] - 800df6c: 2b00 cmp r3, #0 - 800df6e: d101 bne.n 800df74 - 800df70: b672 cpsid i - 800df72: e7fe b.n 800df72 - - if( pxNewTimer != NULL ) - 800df74: 69fb ldr r3, [r7, #28] - 800df76: 2b00 cmp r3, #0 - 800df78: d01e beq.n 800dfb8 - { - /* Ensure the infrastructure used by the timer service task has been - created/initialised. */ - prvCheckForValidListAndQueue(); - 800df7a: f000 fab3 bl 800e4e4 - - /* Initialise the timer structure members using the function - parameters. */ - pxNewTimer->pcTimerName = pcTimerName; - 800df7e: 69fb ldr r3, [r7, #28] - 800df80: 68fa ldr r2, [r7, #12] - 800df82: 601a str r2, [r3, #0] - pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks; - 800df84: 69fb ldr r3, [r7, #28] - 800df86: 68ba ldr r2, [r7, #8] - 800df88: 619a str r2, [r3, #24] - pxNewTimer->pvTimerID = pvTimerID; - 800df8a: 69fb ldr r3, [r7, #28] - 800df8c: 683a ldr r2, [r7, #0] - 800df8e: 61da str r2, [r3, #28] - pxNewTimer->pxCallbackFunction = pxCallbackFunction; - 800df90: 69fb ldr r3, [r7, #28] - 800df92: 69ba ldr r2, [r7, #24] - 800df94: 621a str r2, [r3, #32] - vListInitialiseItem( &( pxNewTimer->xTimerListItem ) ); - 800df96: 69fb ldr r3, [r7, #28] - 800df98: 3304 adds r3, #4 - 800df9a: 0018 movs r0, r3 - 800df9c: f7fe f8ce bl 800c13c - if( uxAutoReload != pdFALSE ) - 800dfa0: 687b ldr r3, [r7, #4] - 800dfa2: 2b00 cmp r3, #0 - 800dfa4: d008 beq.n 800dfb8 - { - pxNewTimer->ucStatus |= tmrSTATUS_IS_AUTORELOAD; - 800dfa6: 69fb ldr r3, [r7, #28] - 800dfa8: 2228 movs r2, #40 ; 0x28 - 800dfaa: 5c9b ldrb r3, [r3, r2] - 800dfac: 2204 movs r2, #4 - 800dfae: 4313 orrs r3, r2 - 800dfb0: b2d9 uxtb r1, r3 - 800dfb2: 69fb ldr r3, [r7, #28] - 800dfb4: 2228 movs r2, #40 ; 0x28 - 800dfb6: 5499 strb r1, [r3, r2] - } - traceTIMER_CREATE( pxNewTimer ); - } -} - 800dfb8: 46c0 nop ; (mov r8, r8) - 800dfba: 46bd mov sp, r7 - 800dfbc: b004 add sp, #16 - 800dfbe: bd80 pop {r7, pc} - -0800dfc0 : -/*-----------------------------------------------------------*/ - -BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) -{ - 800dfc0: b590 push {r4, r7, lr} - 800dfc2: b08b sub sp, #44 ; 0x2c - 800dfc4: af00 add r7, sp, #0 - 800dfc6: 60f8 str r0, [r7, #12] - 800dfc8: 60b9 str r1, [r7, #8] - 800dfca: 607a str r2, [r7, #4] - 800dfcc: 603b str r3, [r7, #0] -BaseType_t xReturn = pdFAIL; - 800dfce: 2300 movs r3, #0 - 800dfd0: 627b str r3, [r7, #36] ; 0x24 -DaemonTaskMessage_t xMessage; - - configASSERT( xTimer ); - 800dfd2: 68fb ldr r3, [r7, #12] - 800dfd4: 2b00 cmp r3, #0 - 800dfd6: d101 bne.n 800dfdc - 800dfd8: b672 cpsid i - 800dfda: e7fe b.n 800dfda - - /* Send a message to the timer service task to perform a particular action - on a particular timer definition. */ - if( xTimerQueue != NULL ) - 800dfdc: 4b1c ldr r3, [pc, #112] ; (800e050 ) - 800dfde: 681b ldr r3, [r3, #0] - 800dfe0: 2b00 cmp r3, #0 - 800dfe2: d030 beq.n 800e046 - { - /* Send a command to the timer service task to start the xTimer timer. */ - xMessage.xMessageID = xCommandID; - 800dfe4: 2414 movs r4, #20 - 800dfe6: 193b adds r3, r7, r4 - 800dfe8: 68ba ldr r2, [r7, #8] - 800dfea: 601a str r2, [r3, #0] - xMessage.u.xTimerParameters.xMessageValue = xOptionalValue; - 800dfec: 193b adds r3, r7, r4 - 800dfee: 687a ldr r2, [r7, #4] - 800dff0: 605a str r2, [r3, #4] - xMessage.u.xTimerParameters.pxTimer = xTimer; - 800dff2: 193b adds r3, r7, r4 - 800dff4: 68fa ldr r2, [r7, #12] - 800dff6: 609a str r2, [r3, #8] - - if( xCommandID < tmrFIRST_FROM_ISR_COMMAND ) - 800dff8: 68bb ldr r3, [r7, #8] - 800dffa: 2b05 cmp r3, #5 - 800dffc: dc19 bgt.n 800e032 - { - if( xTaskGetSchedulerState() == taskSCHEDULER_RUNNING ) - 800dffe: f7ff fd69 bl 800dad4 - 800e002: 0003 movs r3, r0 - 800e004: 2b02 cmp r3, #2 - 800e006: d109 bne.n 800e01c - { - xReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait ); - 800e008: 4b11 ldr r3, [pc, #68] ; (800e050 ) - 800e00a: 6818 ldr r0, [r3, #0] - 800e00c: 6bba ldr r2, [r7, #56] ; 0x38 - 800e00e: 1939 adds r1, r7, r4 - 800e010: 2300 movs r3, #0 - 800e012: f7fe fac8 bl 800c5a6 - 800e016: 0003 movs r3, r0 - 800e018: 627b str r3, [r7, #36] ; 0x24 - 800e01a: e014 b.n 800e046 - } - else - { - xReturn = xQueueSendToBack( xTimerQueue, &xMessage, tmrNO_DELAY ); - 800e01c: 4b0c ldr r3, [pc, #48] ; (800e050 ) - 800e01e: 6818 ldr r0, [r3, #0] - 800e020: 2314 movs r3, #20 - 800e022: 18f9 adds r1, r7, r3 - 800e024: 2300 movs r3, #0 - 800e026: 2200 movs r2, #0 - 800e028: f7fe fabd bl 800c5a6 - 800e02c: 0003 movs r3, r0 - 800e02e: 627b str r3, [r7, #36] ; 0x24 - 800e030: e009 b.n 800e046 - } - } - else - { - xReturn = xQueueSendToBackFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken ); - 800e032: 4b07 ldr r3, [pc, #28] ; (800e050 ) - 800e034: 6818 ldr r0, [r3, #0] - 800e036: 683a ldr r2, [r7, #0] - 800e038: 2314 movs r3, #20 - 800e03a: 18f9 adds r1, r7, r3 - 800e03c: 2300 movs r3, #0 - 800e03e: f7fe fb76 bl 800c72e - 800e042: 0003 movs r3, r0 - 800e044: 627b str r3, [r7, #36] ; 0x24 - else - { - mtCOVERAGE_TEST_MARKER(); - } - - return xReturn; - 800e046: 6a7b ldr r3, [r7, #36] ; 0x24 -} - 800e048: 0018 movs r0, r3 - 800e04a: 46bd mov sp, r7 - 800e04c: b00b add sp, #44 ; 0x2c - 800e04e: bd90 pop {r4, r7, pc} - 800e050: 20001114 .word 0x20001114 - -0800e054 : - return pxTimer->pcTimerName; -} -/*-----------------------------------------------------------*/ - -static void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ) -{ - 800e054: b580 push {r7, lr} - 800e056: b086 sub sp, #24 - 800e058: af02 add r7, sp, #8 - 800e05a: 6078 str r0, [r7, #4] - 800e05c: 6039 str r1, [r7, #0] -BaseType_t xResult; -Timer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800e05e: 4b1e ldr r3, [pc, #120] ; (800e0d8 ) - 800e060: 681b ldr r3, [r3, #0] - 800e062: 68db ldr r3, [r3, #12] - 800e064: 68db ldr r3, [r3, #12] - 800e066: 60fb str r3, [r7, #12] - - /* Remove the timer from the list of active timers. A check has already - been performed to ensure the list is not empty. */ - ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); - 800e068: 68fb ldr r3, [r7, #12] - 800e06a: 3304 adds r3, #4 - 800e06c: 0018 movs r0, r3 - 800e06e: f7fe f8c8 bl 800c202 - traceTIMER_EXPIRED( pxTimer ); - - /* If the timer is an auto-reload timer then calculate the next - expiry time and re-insert the timer in the list of active timers. */ - if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) - 800e072: 68fb ldr r3, [r7, #12] - 800e074: 2228 movs r2, #40 ; 0x28 - 800e076: 5c9b ldrb r3, [r3, r2] - 800e078: 001a movs r2, r3 - 800e07a: 2304 movs r3, #4 - 800e07c: 4013 ands r3, r2 - 800e07e: d019 beq.n 800e0b4 - { - /* The timer is inserted into a list using a time relative to anything - other than the current time. It will therefore be inserted into the - correct list relative to the time this task thinks it is now. */ - if( prvInsertTimerInActiveList( pxTimer, ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ), xTimeNow, xNextExpireTime ) != pdFALSE ) - 800e080: 68fb ldr r3, [r7, #12] - 800e082: 699a ldr r2, [r3, #24] - 800e084: 687b ldr r3, [r7, #4] - 800e086: 18d1 adds r1, r2, r3 - 800e088: 687b ldr r3, [r7, #4] - 800e08a: 683a ldr r2, [r7, #0] - 800e08c: 68f8 ldr r0, [r7, #12] - 800e08e: f000 f8c3 bl 800e218 - 800e092: 1e03 subs r3, r0, #0 - 800e094: d017 beq.n 800e0c6 - { - /* The timer expired before it was added to the active timer - list. Reload it now. */ - xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); - 800e096: 687a ldr r2, [r7, #4] - 800e098: 68f8 ldr r0, [r7, #12] - 800e09a: 2300 movs r3, #0 - 800e09c: 9300 str r3, [sp, #0] - 800e09e: 2300 movs r3, #0 - 800e0a0: 2100 movs r1, #0 - 800e0a2: f7ff ff8d bl 800dfc0 - 800e0a6: 0003 movs r3, r0 - 800e0a8: 60bb str r3, [r7, #8] - configASSERT( xResult ); - 800e0aa: 68bb ldr r3, [r7, #8] - 800e0ac: 2b00 cmp r3, #0 - 800e0ae: d10a bne.n 800e0c6 - 800e0b0: b672 cpsid i - 800e0b2: e7fe b.n 800e0b2 - mtCOVERAGE_TEST_MARKER(); - } - } - else - { - pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; - 800e0b4: 68fb ldr r3, [r7, #12] - 800e0b6: 2228 movs r2, #40 ; 0x28 - 800e0b8: 5c9b ldrb r3, [r3, r2] - 800e0ba: 2201 movs r2, #1 - 800e0bc: 4393 bics r3, r2 - 800e0be: b2d9 uxtb r1, r3 - 800e0c0: 68fb ldr r3, [r7, #12] - 800e0c2: 2228 movs r2, #40 ; 0x28 - 800e0c4: 5499 strb r1, [r3, r2] - mtCOVERAGE_TEST_MARKER(); - } - - /* Call the timer callback. */ - pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); - 800e0c6: 68fb ldr r3, [r7, #12] - 800e0c8: 6a1b ldr r3, [r3, #32] - 800e0ca: 68fa ldr r2, [r7, #12] - 800e0cc: 0010 movs r0, r2 - 800e0ce: 4798 blx r3 -} - 800e0d0: 46c0 nop ; (mov r8, r8) - 800e0d2: 46bd mov sp, r7 - 800e0d4: b004 add sp, #16 - 800e0d6: bd80 pop {r7, pc} - 800e0d8: 2000110c .word 0x2000110c - -0800e0dc : -/*-----------------------------------------------------------*/ - -static portTASK_FUNCTION( prvTimerTask, pvParameters ) -{ - 800e0dc: b580 push {r7, lr} - 800e0de: b084 sub sp, #16 - 800e0e0: af00 add r7, sp, #0 - 800e0e2: 6078 str r0, [r7, #4] - - for( ;; ) - { - /* Query the timers list to see if it contains any timers, and if so, - obtain the time at which the next timer will expire. */ - xNextExpireTime = prvGetNextExpireTime( &xListWasEmpty ); - 800e0e4: 2308 movs r3, #8 - 800e0e6: 18fb adds r3, r7, r3 - 800e0e8: 0018 movs r0, r3 - 800e0ea: f000 f853 bl 800e194 - 800e0ee: 0003 movs r3, r0 - 800e0f0: 60fb str r3, [r7, #12] - - /* If a timer has expired, process it. Otherwise, block this task - until either a timer does expire, or a command is received. */ - prvProcessTimerOrBlockTask( xNextExpireTime, xListWasEmpty ); - 800e0f2: 68ba ldr r2, [r7, #8] - 800e0f4: 68fb ldr r3, [r7, #12] - 800e0f6: 0011 movs r1, r2 - 800e0f8: 0018 movs r0, r3 - 800e0fa: f000 f803 bl 800e104 - - /* Empty the command queue. */ - prvProcessReceivedCommands(); - 800e0fe: f000 f8cd bl 800e29c - xNextExpireTime = prvGetNextExpireTime( &xListWasEmpty ); - 800e102: e7ef b.n 800e0e4 - -0800e104 : - } -} -/*-----------------------------------------------------------*/ - -static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty ) -{ - 800e104: b580 push {r7, lr} - 800e106: b084 sub sp, #16 - 800e108: af00 add r7, sp, #0 - 800e10a: 6078 str r0, [r7, #4] - 800e10c: 6039 str r1, [r7, #0] -TickType_t xTimeNow; -BaseType_t xTimerListsWereSwitched; - - vTaskSuspendAll(); - 800e10e: f7ff f947 bl 800d3a0 - /* Obtain the time now to make an assessment as to whether the timer - has expired or not. If obtaining the time causes the lists to switch - then don't process this timer as any timers that remained in the list - when the lists were switched will have been processed within the - prvSampleTimeNow() function. */ - xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched ); - 800e112: 2308 movs r3, #8 - 800e114: 18fb adds r3, r7, r3 - 800e116: 0018 movs r0, r3 - 800e118: f000 f85e bl 800e1d8 - 800e11c: 0003 movs r3, r0 - 800e11e: 60fb str r3, [r7, #12] - if( xTimerListsWereSwitched == pdFALSE ) - 800e120: 68bb ldr r3, [r7, #8] - 800e122: 2b00 cmp r3, #0 - 800e124: d12b bne.n 800e17e - { - /* The tick count has not overflowed, has the timer expired? */ - if( ( xListWasEmpty == pdFALSE ) && ( xNextExpireTime <= xTimeNow ) ) - 800e126: 683b ldr r3, [r7, #0] - 800e128: 2b00 cmp r3, #0 - 800e12a: d10c bne.n 800e146 - 800e12c: 687a ldr r2, [r7, #4] - 800e12e: 68fb ldr r3, [r7, #12] - 800e130: 429a cmp r2, r3 - 800e132: d808 bhi.n 800e146 - { - ( void ) xTaskResumeAll(); - 800e134: f7ff f940 bl 800d3b8 - prvProcessExpiredTimer( xNextExpireTime, xTimeNow ); - 800e138: 68fa ldr r2, [r7, #12] - 800e13a: 687b ldr r3, [r7, #4] - 800e13c: 0011 movs r1, r2 - 800e13e: 0018 movs r0, r3 - 800e140: f7ff ff88 bl 800e054 - else - { - ( void ) xTaskResumeAll(); - } - } -} - 800e144: e01d b.n 800e182 - if( xListWasEmpty != pdFALSE ) - 800e146: 683b ldr r3, [r7, #0] - 800e148: 2b00 cmp r3, #0 - 800e14a: d008 beq.n 800e15e - xListWasEmpty = listLIST_IS_EMPTY( pxOverflowTimerList ); - 800e14c: 4b0f ldr r3, [pc, #60] ; (800e18c ) - 800e14e: 681b ldr r3, [r3, #0] - 800e150: 681b ldr r3, [r3, #0] - 800e152: 2b00 cmp r3, #0 - 800e154: d101 bne.n 800e15a - 800e156: 2301 movs r3, #1 - 800e158: e000 b.n 800e15c - 800e15a: 2300 movs r3, #0 - 800e15c: 603b str r3, [r7, #0] - vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty ); - 800e15e: 4b0c ldr r3, [pc, #48] ; (800e190 ) - 800e160: 6818 ldr r0, [r3, #0] - 800e162: 687a ldr r2, [r7, #4] - 800e164: 68fb ldr r3, [r7, #12] - 800e166: 1ad3 subs r3, r2, r3 - 800e168: 683a ldr r2, [r7, #0] - 800e16a: 0019 movs r1, r3 - 800e16c: f7fe fec8 bl 800cf00 - if( xTaskResumeAll() == pdFALSE ) - 800e170: f7ff f922 bl 800d3b8 - 800e174: 1e03 subs r3, r0, #0 - 800e176: d104 bne.n 800e182 - portYIELD_WITHIN_API(); - 800e178: f000 faba bl 800e6f0 -} - 800e17c: e001 b.n 800e182 - ( void ) xTaskResumeAll(); - 800e17e: f7ff f91b bl 800d3b8 -} - 800e182: 46c0 nop ; (mov r8, r8) - 800e184: 46bd mov sp, r7 - 800e186: b004 add sp, #16 - 800e188: bd80 pop {r7, pc} - 800e18a: 46c0 nop ; (mov r8, r8) - 800e18c: 20001110 .word 0x20001110 - 800e190: 20001114 .word 0x20001114 - -0800e194 : -/*-----------------------------------------------------------*/ - -static TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty ) -{ - 800e194: b580 push {r7, lr} - 800e196: b084 sub sp, #16 - 800e198: af00 add r7, sp, #0 - 800e19a: 6078 str r0, [r7, #4] - the timer with the nearest expiry time will expire. If there are no - active timers then just set the next expire time to 0. That will cause - this task to unblock when the tick count overflows, at which point the - timer lists will be switched and the next expiry time can be - re-assessed. */ - *pxListWasEmpty = listLIST_IS_EMPTY( pxCurrentTimerList ); - 800e19c: 4b0d ldr r3, [pc, #52] ; (800e1d4 ) - 800e19e: 681b ldr r3, [r3, #0] - 800e1a0: 681b ldr r3, [r3, #0] - 800e1a2: 2b00 cmp r3, #0 - 800e1a4: d101 bne.n 800e1aa - 800e1a6: 2201 movs r2, #1 - 800e1a8: e000 b.n 800e1ac - 800e1aa: 2200 movs r2, #0 - 800e1ac: 687b ldr r3, [r7, #4] - 800e1ae: 601a str r2, [r3, #0] - if( *pxListWasEmpty == pdFALSE ) - 800e1b0: 687b ldr r3, [r7, #4] - 800e1b2: 681b ldr r3, [r3, #0] - 800e1b4: 2b00 cmp r3, #0 - 800e1b6: d105 bne.n 800e1c4 - { - xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); - 800e1b8: 4b06 ldr r3, [pc, #24] ; (800e1d4 ) - 800e1ba: 681b ldr r3, [r3, #0] - 800e1bc: 68db ldr r3, [r3, #12] - 800e1be: 681b ldr r3, [r3, #0] - 800e1c0: 60fb str r3, [r7, #12] - 800e1c2: e001 b.n 800e1c8 - } - else - { - /* Ensure the task unblocks when the tick count rolls over. */ - xNextExpireTime = ( TickType_t ) 0U; - 800e1c4: 2300 movs r3, #0 - 800e1c6: 60fb str r3, [r7, #12] - } - - return xNextExpireTime; - 800e1c8: 68fb ldr r3, [r7, #12] -} - 800e1ca: 0018 movs r0, r3 - 800e1cc: 46bd mov sp, r7 - 800e1ce: b004 add sp, #16 - 800e1d0: bd80 pop {r7, pc} - 800e1d2: 46c0 nop ; (mov r8, r8) - 800e1d4: 2000110c .word 0x2000110c - -0800e1d8 : -/*-----------------------------------------------------------*/ - -static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ) -{ - 800e1d8: b580 push {r7, lr} - 800e1da: b084 sub sp, #16 - 800e1dc: af00 add r7, sp, #0 - 800e1de: 6078 str r0, [r7, #4] -TickType_t xTimeNow; -PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */ - - xTimeNow = xTaskGetTickCount(); - 800e1e0: f7ff f976 bl 800d4d0 - 800e1e4: 0003 movs r3, r0 - 800e1e6: 60fb str r3, [r7, #12] - - if( xTimeNow < xLastTime ) - 800e1e8: 4b0a ldr r3, [pc, #40] ; (800e214 ) - 800e1ea: 681b ldr r3, [r3, #0] - 800e1ec: 68fa ldr r2, [r7, #12] - 800e1ee: 429a cmp r2, r3 - 800e1f0: d205 bcs.n 800e1fe - { - prvSwitchTimerLists(); - 800e1f2: f000 f919 bl 800e428 - *pxTimerListsWereSwitched = pdTRUE; - 800e1f6: 687b ldr r3, [r7, #4] - 800e1f8: 2201 movs r2, #1 - 800e1fa: 601a str r2, [r3, #0] - 800e1fc: e002 b.n 800e204 - } - else - { - *pxTimerListsWereSwitched = pdFALSE; - 800e1fe: 687b ldr r3, [r7, #4] - 800e200: 2200 movs r2, #0 - 800e202: 601a str r2, [r3, #0] - } - - xLastTime = xTimeNow; - 800e204: 4b03 ldr r3, [pc, #12] ; (800e214 ) - 800e206: 68fa ldr r2, [r7, #12] - 800e208: 601a str r2, [r3, #0] - - return xTimeNow; - 800e20a: 68fb ldr r3, [r7, #12] -} - 800e20c: 0018 movs r0, r3 - 800e20e: 46bd mov sp, r7 - 800e210: b004 add sp, #16 - 800e212: bd80 pop {r7, pc} - 800e214: 2000111c .word 0x2000111c - -0800e218 : -/*-----------------------------------------------------------*/ - -static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ) -{ - 800e218: b580 push {r7, lr} - 800e21a: b086 sub sp, #24 - 800e21c: af00 add r7, sp, #0 - 800e21e: 60f8 str r0, [r7, #12] - 800e220: 60b9 str r1, [r7, #8] - 800e222: 607a str r2, [r7, #4] - 800e224: 603b str r3, [r7, #0] -BaseType_t xProcessTimerNow = pdFALSE; - 800e226: 2300 movs r3, #0 - 800e228: 617b str r3, [r7, #20] - - listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xNextExpiryTime ); - 800e22a: 68fb ldr r3, [r7, #12] - 800e22c: 68ba ldr r2, [r7, #8] - 800e22e: 605a str r2, [r3, #4] - listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); - 800e230: 68fb ldr r3, [r7, #12] - 800e232: 68fa ldr r2, [r7, #12] - 800e234: 611a str r2, [r3, #16] - - if( xNextExpiryTime <= xTimeNow ) - 800e236: 68ba ldr r2, [r7, #8] - 800e238: 687b ldr r3, [r7, #4] - 800e23a: 429a cmp r2, r3 - 800e23c: d812 bhi.n 800e264 - { - /* Has the expiry time elapsed between the command to start/reset a - timer was issued, and the time the command was processed? */ - if( ( ( TickType_t ) ( xTimeNow - xCommandTime ) ) >= pxTimer->xTimerPeriodInTicks ) /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 800e23e: 687a ldr r2, [r7, #4] - 800e240: 683b ldr r3, [r7, #0] - 800e242: 1ad2 subs r2, r2, r3 - 800e244: 68fb ldr r3, [r7, #12] - 800e246: 699b ldr r3, [r3, #24] - 800e248: 429a cmp r2, r3 - 800e24a: d302 bcc.n 800e252 - { - /* The time between a command being issued and the command being - processed actually exceeds the timers period. */ - xProcessTimerNow = pdTRUE; - 800e24c: 2301 movs r3, #1 - 800e24e: 617b str r3, [r7, #20] - 800e250: e01b b.n 800e28a - } - else - { - vListInsert( pxOverflowTimerList, &( pxTimer->xTimerListItem ) ); - 800e252: 4b10 ldr r3, [pc, #64] ; (800e294 ) - 800e254: 681a ldr r2, [r3, #0] - 800e256: 68fb ldr r3, [r7, #12] - 800e258: 3304 adds r3, #4 - 800e25a: 0019 movs r1, r3 - 800e25c: 0010 movs r0, r2 - 800e25e: f7fd ff9a bl 800c196 - 800e262: e012 b.n 800e28a - } - } - else - { - if( ( xTimeNow < xCommandTime ) && ( xNextExpiryTime >= xCommandTime ) ) - 800e264: 687a ldr r2, [r7, #4] - 800e266: 683b ldr r3, [r7, #0] - 800e268: 429a cmp r2, r3 - 800e26a: d206 bcs.n 800e27a - 800e26c: 68ba ldr r2, [r7, #8] - 800e26e: 683b ldr r3, [r7, #0] - 800e270: 429a cmp r2, r3 - 800e272: d302 bcc.n 800e27a - { - /* If, since the command was issued, the tick count has overflowed - but the expiry time has not, then the timer must have already passed - its expiry time and should be processed immediately. */ - xProcessTimerNow = pdTRUE; - 800e274: 2301 movs r3, #1 - 800e276: 617b str r3, [r7, #20] - 800e278: e007 b.n 800e28a - } - else - { - vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); - 800e27a: 4b07 ldr r3, [pc, #28] ; (800e298 ) - 800e27c: 681a ldr r2, [r3, #0] - 800e27e: 68fb ldr r3, [r7, #12] - 800e280: 3304 adds r3, #4 - 800e282: 0019 movs r1, r3 - 800e284: 0010 movs r0, r2 - 800e286: f7fd ff86 bl 800c196 - } - } - - return xProcessTimerNow; - 800e28a: 697b ldr r3, [r7, #20] -} - 800e28c: 0018 movs r0, r3 - 800e28e: 46bd mov sp, r7 - 800e290: b006 add sp, #24 - 800e292: bd80 pop {r7, pc} - 800e294: 20001110 .word 0x20001110 - 800e298: 2000110c .word 0x2000110c - -0800e29c : -/*-----------------------------------------------------------*/ - -static void prvProcessReceivedCommands( void ) -{ - 800e29c: b590 push {r4, r7, lr} - 800e29e: b08d sub sp, #52 ; 0x34 - 800e2a0: af02 add r7, sp, #8 -DaemonTaskMessage_t xMessage; -Timer_t *pxTimer; -BaseType_t xTimerListsWereSwitched, xResult; -TickType_t xTimeNow; - - while( xQueueReceive( xTimerQueue, &xMessage, tmrNO_DELAY ) != pdFAIL ) /*lint !e603 xMessage does not have to be initialised as it is passed out, not in, and it is not used unless xQueueReceive() returns pdTRUE. */ - 800e2a2: e0ac b.n 800e3fe - { - #if ( INCLUDE_xTimerPendFunctionCall == 1 ) - { - /* Negative commands are pended function calls rather than timer - commands. */ - if( xMessage.xMessageID < ( BaseType_t ) 0 ) - 800e2a4: 2208 movs r2, #8 - 800e2a6: 18bb adds r3, r7, r2 - 800e2a8: 681b ldr r3, [r3, #0] - 800e2aa: 2b00 cmp r3, #0 - 800e2ac: da0f bge.n 800e2ce - { - const CallbackParameters_t * const pxCallback = &( xMessage.u.xCallbackParameters ); - 800e2ae: 18bb adds r3, r7, r2 - 800e2b0: 3304 adds r3, #4 - 800e2b2: 627b str r3, [r7, #36] ; 0x24 - - /* The timer uses the xCallbackParameters member to request a - callback be executed. Check the callback is not NULL. */ - configASSERT( pxCallback ); - 800e2b4: 6a7b ldr r3, [r7, #36] ; 0x24 - 800e2b6: 2b00 cmp r3, #0 - 800e2b8: d101 bne.n 800e2be - 800e2ba: b672 cpsid i - 800e2bc: e7fe b.n 800e2bc - - /* Call the function. */ - pxCallback->pxCallbackFunction( pxCallback->pvParameter1, pxCallback->ulParameter2 ); - 800e2be: 6a7b ldr r3, [r7, #36] ; 0x24 - 800e2c0: 681a ldr r2, [r3, #0] - 800e2c2: 6a7b ldr r3, [r7, #36] ; 0x24 - 800e2c4: 6858 ldr r0, [r3, #4] - 800e2c6: 6a7b ldr r3, [r7, #36] ; 0x24 - 800e2c8: 689b ldr r3, [r3, #8] - 800e2ca: 0019 movs r1, r3 - 800e2cc: 4790 blx r2 - } - #endif /* INCLUDE_xTimerPendFunctionCall */ - - /* Commands that are positive are timer commands rather than pended - function calls. */ - if( xMessage.xMessageID >= ( BaseType_t ) 0 ) - 800e2ce: 2208 movs r2, #8 - 800e2d0: 18bb adds r3, r7, r2 - 800e2d2: 681b ldr r3, [r3, #0] - 800e2d4: 2b00 cmp r3, #0 - 800e2d6: da00 bge.n 800e2da - 800e2d8: e090 b.n 800e3fc - { - /* The messages uses the xTimerParameters member to work on a - software timer. */ - pxTimer = xMessage.u.xTimerParameters.pxTimer; - 800e2da: 18bb adds r3, r7, r2 - 800e2dc: 689b ldr r3, [r3, #8] - 800e2de: 623b str r3, [r7, #32] - - if( listIS_CONTAINED_WITHIN( NULL, &( pxTimer->xTimerListItem ) ) == pdFALSE ) /*lint !e961. The cast is only redundant when NULL is passed into the macro. */ - 800e2e0: 6a3b ldr r3, [r7, #32] - 800e2e2: 695b ldr r3, [r3, #20] - 800e2e4: 2b00 cmp r3, #0 - 800e2e6: d004 beq.n 800e2f2 - { - /* The timer is in a list, remove it. */ - ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); - 800e2e8: 6a3b ldr r3, [r7, #32] - 800e2ea: 3304 adds r3, #4 - 800e2ec: 0018 movs r0, r3 - 800e2ee: f7fd ff88 bl 800c202 - it must be present in the function call. prvSampleTimeNow() must be - called after the message is received from xTimerQueue so there is no - possibility of a higher priority task adding a message to the message - queue with a time that is ahead of the timer daemon task (because it - pre-empted the timer daemon task after the xTimeNow value was set). */ - xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched ); - 800e2f2: 1d3b adds r3, r7, #4 - 800e2f4: 0018 movs r0, r3 - 800e2f6: f7ff ff6f bl 800e1d8 - 800e2fa: 0003 movs r3, r0 - 800e2fc: 61fb str r3, [r7, #28] - - switch( xMessage.xMessageID ) - 800e2fe: 2308 movs r3, #8 - 800e300: 18fb adds r3, r7, r3 - 800e302: 681b ldr r3, [r3, #0] - 800e304: 2b09 cmp r3, #9 - 800e306: d900 bls.n 800e30a - 800e308: e079 b.n 800e3fe - 800e30a: 009a lsls r2, r3, #2 - 800e30c: 4b44 ldr r3, [pc, #272] ; (800e420 ) - 800e30e: 18d3 adds r3, r2, r3 - 800e310: 681b ldr r3, [r3, #0] - 800e312: 469f mov pc, r3 - case tmrCOMMAND_START_FROM_ISR : - case tmrCOMMAND_RESET : - case tmrCOMMAND_RESET_FROM_ISR : - case tmrCOMMAND_START_DONT_TRACE : - /* Start or restart a timer. */ - pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE; - 800e314: 6a3b ldr r3, [r7, #32] - 800e316: 2228 movs r2, #40 ; 0x28 - 800e318: 5c9b ldrb r3, [r3, r2] - 800e31a: 2201 movs r2, #1 - 800e31c: 4313 orrs r3, r2 - 800e31e: b2d9 uxtb r1, r3 - 800e320: 6a3b ldr r3, [r7, #32] - 800e322: 2228 movs r2, #40 ; 0x28 - 800e324: 5499 strb r1, [r3, r2] - if( prvInsertTimerInActiveList( pxTimer, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, xTimeNow, xMessage.u.xTimerParameters.xMessageValue ) != pdFALSE ) - 800e326: 2408 movs r4, #8 - 800e328: 193b adds r3, r7, r4 - 800e32a: 685a ldr r2, [r3, #4] - 800e32c: 6a3b ldr r3, [r7, #32] - 800e32e: 699b ldr r3, [r3, #24] - 800e330: 18d1 adds r1, r2, r3 - 800e332: 193b adds r3, r7, r4 - 800e334: 685b ldr r3, [r3, #4] - 800e336: 69fa ldr r2, [r7, #28] - 800e338: 6a38 ldr r0, [r7, #32] - 800e33a: f7ff ff6d bl 800e218 - 800e33e: 1e03 subs r3, r0, #0 - 800e340: d05d beq.n 800e3fe - { - /* The timer expired before it was added to the active - timer list. Process it now. */ - pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); - 800e342: 6a3b ldr r3, [r7, #32] - 800e344: 6a1b ldr r3, [r3, #32] - 800e346: 6a3a ldr r2, [r7, #32] - 800e348: 0010 movs r0, r2 - 800e34a: 4798 blx r3 - traceTIMER_EXPIRED( pxTimer ); - - if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) - 800e34c: 6a3b ldr r3, [r7, #32] - 800e34e: 2228 movs r2, #40 ; 0x28 - 800e350: 5c9b ldrb r3, [r3, r2] - 800e352: 001a movs r2, r3 - 800e354: 2304 movs r3, #4 - 800e356: 4013 ands r3, r2 - 800e358: d051 beq.n 800e3fe - { - xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, NULL, tmrNO_DELAY ); - 800e35a: 193b adds r3, r7, r4 - 800e35c: 685a ldr r2, [r3, #4] - 800e35e: 6a3b ldr r3, [r7, #32] - 800e360: 699b ldr r3, [r3, #24] - 800e362: 18d2 adds r2, r2, r3 - 800e364: 6a38 ldr r0, [r7, #32] - 800e366: 2300 movs r3, #0 - 800e368: 9300 str r3, [sp, #0] - 800e36a: 2300 movs r3, #0 - 800e36c: 2100 movs r1, #0 - 800e36e: f7ff fe27 bl 800dfc0 - 800e372: 0003 movs r3, r0 - 800e374: 61bb str r3, [r7, #24] - configASSERT( xResult ); - 800e376: 69bb ldr r3, [r7, #24] - 800e378: 2b00 cmp r3, #0 - 800e37a: d140 bne.n 800e3fe - 800e37c: b672 cpsid i - 800e37e: e7fe b.n 800e37e - break; - - case tmrCOMMAND_STOP : - case tmrCOMMAND_STOP_FROM_ISR : - /* The timer has already been removed from the active list. */ - pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; - 800e380: 6a3b ldr r3, [r7, #32] - 800e382: 2228 movs r2, #40 ; 0x28 - 800e384: 5c9b ldrb r3, [r3, r2] - 800e386: 2201 movs r2, #1 - 800e388: 4393 bics r3, r2 - 800e38a: b2d9 uxtb r1, r3 - 800e38c: 6a3b ldr r3, [r7, #32] - 800e38e: 2228 movs r2, #40 ; 0x28 - 800e390: 5499 strb r1, [r3, r2] - break; - 800e392: e034 b.n 800e3fe - - case tmrCOMMAND_CHANGE_PERIOD : - case tmrCOMMAND_CHANGE_PERIOD_FROM_ISR : - pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE; - 800e394: 6a3b ldr r3, [r7, #32] - 800e396: 2228 movs r2, #40 ; 0x28 - 800e398: 5c9b ldrb r3, [r3, r2] - 800e39a: 2201 movs r2, #1 - 800e39c: 4313 orrs r3, r2 - 800e39e: b2d9 uxtb r1, r3 - 800e3a0: 6a3b ldr r3, [r7, #32] - 800e3a2: 2228 movs r2, #40 ; 0x28 - 800e3a4: 5499 strb r1, [r3, r2] - pxTimer->xTimerPeriodInTicks = xMessage.u.xTimerParameters.xMessageValue; - 800e3a6: 2308 movs r3, #8 - 800e3a8: 18fb adds r3, r7, r3 - 800e3aa: 685a ldr r2, [r3, #4] - 800e3ac: 6a3b ldr r3, [r7, #32] - 800e3ae: 619a str r2, [r3, #24] - configASSERT( ( pxTimer->xTimerPeriodInTicks > 0 ) ); - 800e3b0: 6a3b ldr r3, [r7, #32] - 800e3b2: 699b ldr r3, [r3, #24] - 800e3b4: 2b00 cmp r3, #0 - 800e3b6: d101 bne.n 800e3bc - 800e3b8: b672 cpsid i - 800e3ba: e7fe b.n 800e3ba - be longer or shorter than the old one. The command time is - therefore set to the current time, and as the period cannot - be zero the next expiry time can only be in the future, - meaning (unlike for the xTimerStart() case above) there is - no fail case that needs to be handled here. */ - ( void ) prvInsertTimerInActiveList( pxTimer, ( xTimeNow + pxTimer->xTimerPeriodInTicks ), xTimeNow, xTimeNow ); - 800e3bc: 6a3b ldr r3, [r7, #32] - 800e3be: 699a ldr r2, [r3, #24] - 800e3c0: 69fb ldr r3, [r7, #28] - 800e3c2: 18d1 adds r1, r2, r3 - 800e3c4: 69fb ldr r3, [r7, #28] - 800e3c6: 69fa ldr r2, [r7, #28] - 800e3c8: 6a38 ldr r0, [r7, #32] - 800e3ca: f7ff ff25 bl 800e218 - break; - 800e3ce: e016 b.n 800e3fe - #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) - { - /* The timer has already been removed from the active list, - just free up the memory if the memory was dynamically - allocated. */ - if( ( pxTimer->ucStatus & tmrSTATUS_IS_STATICALLY_ALLOCATED ) == ( uint8_t ) 0 ) - 800e3d0: 6a3b ldr r3, [r7, #32] - 800e3d2: 2228 movs r2, #40 ; 0x28 - 800e3d4: 5c9b ldrb r3, [r3, r2] - 800e3d6: 001a movs r2, r3 - 800e3d8: 2302 movs r3, #2 - 800e3da: 4013 ands r3, r2 - 800e3dc: d104 bne.n 800e3e8 - { - vPortFree( pxTimer ); - 800e3de: 6a3b ldr r3, [r7, #32] - 800e3e0: 0018 movs r0, r3 - 800e3e2: f000 fad9 bl 800e998 - 800e3e6: e00a b.n 800e3fe - } - else - { - pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; - 800e3e8: 6a3b ldr r3, [r7, #32] - 800e3ea: 2228 movs r2, #40 ; 0x28 - 800e3ec: 5c9b ldrb r3, [r3, r2] - 800e3ee: 2201 movs r2, #1 - 800e3f0: 4393 bics r3, r2 - 800e3f2: b2d9 uxtb r1, r3 - 800e3f4: 6a3b ldr r3, [r7, #32] - 800e3f6: 2228 movs r2, #40 ; 0x28 - 800e3f8: 5499 strb r1, [r3, r2] - no need to free the memory - just mark the timer as - "not active". */ - pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; - } - #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ - break; - 800e3fa: e000 b.n 800e3fe - - default : - /* Don't expect to get here. */ - break; - } - } - 800e3fc: 46c0 nop ; (mov r8, r8) - while( xQueueReceive( xTimerQueue, &xMessage, tmrNO_DELAY ) != pdFAIL ) /*lint !e603 xMessage does not have to be initialised as it is passed out, not in, and it is not used unless xQueueReceive() returns pdTRUE. */ - 800e3fe: 4b09 ldr r3, [pc, #36] ; (800e424 ) - 800e400: 681b ldr r3, [r3, #0] - 800e402: 2208 movs r2, #8 - 800e404: 18b9 adds r1, r7, r2 - 800e406: 2200 movs r2, #0 - 800e408: 0018 movs r0, r3 - 800e40a: f7fe fa04 bl 800c816 - 800e40e: 1e03 subs r3, r0, #0 - 800e410: d000 beq.n 800e414 - 800e412: e747 b.n 800e2a4 - } -} - 800e414: 46c0 nop ; (mov r8, r8) - 800e416: 46c0 nop ; (mov r8, r8) - 800e418: 46bd mov sp, r7 - 800e41a: b00b add sp, #44 ; 0x2c - 800e41c: bd90 pop {r4, r7, pc} - 800e41e: 46c0 nop ; (mov r8, r8) - 800e420: 08010f5c .word 0x08010f5c - 800e424: 20001114 .word 0x20001114 - -0800e428 : -/*-----------------------------------------------------------*/ - -static void prvSwitchTimerLists( void ) -{ - 800e428: b580 push {r7, lr} - 800e42a: b088 sub sp, #32 - 800e42c: af02 add r7, sp, #8 - - /* The tick count has overflowed. The timer lists must be switched. - If there are any timers still referenced from the current timer list - then they must have expired and should be processed before the lists - are switched. */ - while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE ) - 800e42e: e041 b.n 800e4b4 - { - xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); - 800e430: 4b2a ldr r3, [pc, #168] ; (800e4dc ) - 800e432: 681b ldr r3, [r3, #0] - 800e434: 68db ldr r3, [r3, #12] - 800e436: 681b ldr r3, [r3, #0] - 800e438: 613b str r3, [r7, #16] - - /* Remove the timer from the list. */ - pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 800e43a: 4b28 ldr r3, [pc, #160] ; (800e4dc ) - 800e43c: 681b ldr r3, [r3, #0] - 800e43e: 68db ldr r3, [r3, #12] - 800e440: 68db ldr r3, [r3, #12] - 800e442: 60fb str r3, [r7, #12] - ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); - 800e444: 68fb ldr r3, [r7, #12] - 800e446: 3304 adds r3, #4 - 800e448: 0018 movs r0, r3 - 800e44a: f7fd feda bl 800c202 - traceTIMER_EXPIRED( pxTimer ); - - /* Execute its callback, then send a command to restart the timer if - it is an auto-reload timer. It cannot be restarted here as the lists - have not yet been switched. */ - pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); - 800e44e: 68fb ldr r3, [r7, #12] - 800e450: 6a1b ldr r3, [r3, #32] - 800e452: 68fa ldr r2, [r7, #12] - 800e454: 0010 movs r0, r2 - 800e456: 4798 blx r3 - - if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) - 800e458: 68fb ldr r3, [r7, #12] - 800e45a: 2228 movs r2, #40 ; 0x28 - 800e45c: 5c9b ldrb r3, [r3, r2] - 800e45e: 001a movs r2, r3 - 800e460: 2304 movs r3, #4 - 800e462: 4013 ands r3, r2 - 800e464: d026 beq.n 800e4b4 - the timer going into the same timer list then it has already expired - and the timer should be re-inserted into the current list so it is - processed again within this loop. Otherwise a command should be sent - to restart the timer to ensure it is only inserted into a list after - the lists have been swapped. */ - xReloadTime = ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ); - 800e466: 68fb ldr r3, [r7, #12] - 800e468: 699b ldr r3, [r3, #24] - 800e46a: 693a ldr r2, [r7, #16] - 800e46c: 18d3 adds r3, r2, r3 - 800e46e: 60bb str r3, [r7, #8] - if( xReloadTime > xNextExpireTime ) - 800e470: 68ba ldr r2, [r7, #8] - 800e472: 693b ldr r3, [r7, #16] - 800e474: 429a cmp r2, r3 - 800e476: d90e bls.n 800e496 - { - listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xReloadTime ); - 800e478: 68fb ldr r3, [r7, #12] - 800e47a: 68ba ldr r2, [r7, #8] - 800e47c: 605a str r2, [r3, #4] - listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); - 800e47e: 68fb ldr r3, [r7, #12] - 800e480: 68fa ldr r2, [r7, #12] - 800e482: 611a str r2, [r3, #16] - vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); - 800e484: 4b15 ldr r3, [pc, #84] ; (800e4dc ) - 800e486: 681a ldr r2, [r3, #0] - 800e488: 68fb ldr r3, [r7, #12] - 800e48a: 3304 adds r3, #4 - 800e48c: 0019 movs r1, r3 - 800e48e: 0010 movs r0, r2 - 800e490: f7fd fe81 bl 800c196 - 800e494: e00e b.n 800e4b4 - } - else - { - xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); - 800e496: 693a ldr r2, [r7, #16] - 800e498: 68f8 ldr r0, [r7, #12] - 800e49a: 2300 movs r3, #0 - 800e49c: 9300 str r3, [sp, #0] - 800e49e: 2300 movs r3, #0 - 800e4a0: 2100 movs r1, #0 - 800e4a2: f7ff fd8d bl 800dfc0 - 800e4a6: 0003 movs r3, r0 - 800e4a8: 607b str r3, [r7, #4] - configASSERT( xResult ); - 800e4aa: 687b ldr r3, [r7, #4] - 800e4ac: 2b00 cmp r3, #0 - 800e4ae: d101 bne.n 800e4b4 - 800e4b0: b672 cpsid i - 800e4b2: e7fe b.n 800e4b2 - while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE ) - 800e4b4: 4b09 ldr r3, [pc, #36] ; (800e4dc ) - 800e4b6: 681b ldr r3, [r3, #0] - 800e4b8: 681b ldr r3, [r3, #0] - 800e4ba: 2b00 cmp r3, #0 - 800e4bc: d1b8 bne.n 800e430 - { - mtCOVERAGE_TEST_MARKER(); - } - } - - pxTemp = pxCurrentTimerList; - 800e4be: 4b07 ldr r3, [pc, #28] ; (800e4dc ) - 800e4c0: 681b ldr r3, [r3, #0] - 800e4c2: 617b str r3, [r7, #20] - pxCurrentTimerList = pxOverflowTimerList; - 800e4c4: 4b06 ldr r3, [pc, #24] ; (800e4e0 ) - 800e4c6: 681a ldr r2, [r3, #0] - 800e4c8: 4b04 ldr r3, [pc, #16] ; (800e4dc ) - 800e4ca: 601a str r2, [r3, #0] - pxOverflowTimerList = pxTemp; - 800e4cc: 4b04 ldr r3, [pc, #16] ; (800e4e0 ) - 800e4ce: 697a ldr r2, [r7, #20] - 800e4d0: 601a str r2, [r3, #0] -} - 800e4d2: 46c0 nop ; (mov r8, r8) - 800e4d4: 46bd mov sp, r7 - 800e4d6: b006 add sp, #24 - 800e4d8: bd80 pop {r7, pc} - 800e4da: 46c0 nop ; (mov r8, r8) - 800e4dc: 2000110c .word 0x2000110c - 800e4e0: 20001110 .word 0x20001110 - -0800e4e4 : -/*-----------------------------------------------------------*/ - -static void prvCheckForValidListAndQueue( void ) -{ - 800e4e4: b580 push {r7, lr} - 800e4e6: b082 sub sp, #8 - 800e4e8: af02 add r7, sp, #8 - /* Check that the list from which active timers are referenced, and the - queue used to communicate with the timer service, have been - initialised. */ - taskENTER_CRITICAL(); - 800e4ea: f000 f911 bl 800e710 - { - if( xTimerQueue == NULL ) - 800e4ee: 4b16 ldr r3, [pc, #88] ; (800e548 ) - 800e4f0: 681b ldr r3, [r3, #0] - 800e4f2: 2b00 cmp r3, #0 - 800e4f4: d123 bne.n 800e53e - { - vListInitialise( &xActiveTimerList1 ); - 800e4f6: 4b15 ldr r3, [pc, #84] ; (800e54c ) - 800e4f8: 0018 movs r0, r3 - 800e4fa: f7fd fe01 bl 800c100 - vListInitialise( &xActiveTimerList2 ); - 800e4fe: 4b14 ldr r3, [pc, #80] ; (800e550 ) - 800e500: 0018 movs r0, r3 - 800e502: f7fd fdfd bl 800c100 - pxCurrentTimerList = &xActiveTimerList1; - 800e506: 4b13 ldr r3, [pc, #76] ; (800e554 ) - 800e508: 4a10 ldr r2, [pc, #64] ; (800e54c ) - 800e50a: 601a str r2, [r3, #0] - pxOverflowTimerList = &xActiveTimerList2; - 800e50c: 4b12 ldr r3, [pc, #72] ; (800e558 ) - 800e50e: 4a10 ldr r2, [pc, #64] ; (800e550 ) - 800e510: 601a str r2, [r3, #0] - /* The timer queue is allocated statically in case - configSUPPORT_DYNAMIC_ALLOCATION is 0. */ - static StaticQueue_t xStaticTimerQueue; /*lint !e956 Ok to declare in this manner to prevent additional conditional compilation guards in other locations. */ - static uint8_t ucStaticTimerQueueStorage[ ( size_t ) configTIMER_QUEUE_LENGTH * sizeof( DaemonTaskMessage_t ) ]; /*lint !e956 Ok to declare in this manner to prevent additional conditional compilation guards in other locations. */ - - xTimerQueue = xQueueCreateStatic( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, ( UBaseType_t ) sizeof( DaemonTaskMessage_t ), &( ucStaticTimerQueueStorage[ 0 ] ), &xStaticTimerQueue ); - 800e512: 4b12 ldr r3, [pc, #72] ; (800e55c ) - 800e514: 4a12 ldr r2, [pc, #72] ; (800e560 ) - 800e516: 2100 movs r1, #0 - 800e518: 9100 str r1, [sp, #0] - 800e51a: 2110 movs r1, #16 - 800e51c: 200a movs r0, #10 - 800e51e: f7fd feec bl 800c2fa - 800e522: 0002 movs r2, r0 - 800e524: 4b08 ldr r3, [pc, #32] ; (800e548 ) - 800e526: 601a str r2, [r3, #0] - } - #endif - - #if ( configQUEUE_REGISTRY_SIZE > 0 ) - { - if( xTimerQueue != NULL ) - 800e528: 4b07 ldr r3, [pc, #28] ; (800e548 ) - 800e52a: 681b ldr r3, [r3, #0] - 800e52c: 2b00 cmp r3, #0 - 800e52e: d006 beq.n 800e53e - { - vQueueAddToRegistry( xTimerQueue, "TmrQ" ); - 800e530: 4b05 ldr r3, [pc, #20] ; (800e548 ) - 800e532: 681b ldr r3, [r3, #0] - 800e534: 4a0b ldr r2, [pc, #44] ; (800e564 ) - 800e536: 0011 movs r1, r2 - 800e538: 0018 movs r0, r3 - 800e53a: f7fe fcb9 bl 800ceb0 - else - { - mtCOVERAGE_TEST_MARKER(); - } - } - taskEXIT_CRITICAL(); - 800e53e: f000 f8f9 bl 800e734 -} - 800e542: 46c0 nop ; (mov r8, r8) - 800e544: 46bd mov sp, r7 - 800e546: bd80 pop {r7, pc} - 800e548: 20001114 .word 0x20001114 - 800e54c: 200010e4 .word 0x200010e4 - 800e550: 200010f8 .word 0x200010f8 - 800e554: 2000110c .word 0x2000110c - 800e558: 20001110 .word 0x20001110 - 800e55c: 200011c0 .word 0x200011c0 - 800e560: 20001120 .word 0x20001120 - 800e564: 0800f7a4 .word 0x0800f7a4 - -0800e568 : -/*-----------------------------------------------------------*/ - -BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ) -{ - 800e568: b580 push {r7, lr} - 800e56a: b084 sub sp, #16 - 800e56c: af00 add r7, sp, #0 - 800e56e: 6078 str r0, [r7, #4] -BaseType_t xReturn; -Timer_t *pxTimer = xTimer; - 800e570: 687b ldr r3, [r7, #4] - 800e572: 60bb str r3, [r7, #8] - - configASSERT( xTimer ); - 800e574: 687b ldr r3, [r7, #4] - 800e576: 2b00 cmp r3, #0 - 800e578: d101 bne.n 800e57e - 800e57a: b672 cpsid i - 800e57c: e7fe b.n 800e57c - - /* Is the timer in the list of active timers? */ - taskENTER_CRITICAL(); - 800e57e: f000 f8c7 bl 800e710 - { - if( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0 ) - 800e582: 68bb ldr r3, [r7, #8] - 800e584: 2228 movs r2, #40 ; 0x28 - 800e586: 5c9b ldrb r3, [r3, r2] - 800e588: 001a movs r2, r3 - 800e58a: 2301 movs r3, #1 - 800e58c: 4013 ands r3, r2 - 800e58e: d102 bne.n 800e596 - { - xReturn = pdFALSE; - 800e590: 2300 movs r3, #0 - 800e592: 60fb str r3, [r7, #12] - 800e594: e001 b.n 800e59a - } - else - { - xReturn = pdTRUE; - 800e596: 2301 movs r3, #1 - 800e598: 60fb str r3, [r7, #12] - } - } - taskEXIT_CRITICAL(); - 800e59a: f000 f8cb bl 800e734 - - return xReturn; - 800e59e: 68fb ldr r3, [r7, #12] -} /*lint !e818 Can't be pointer to const due to the typedef. */ - 800e5a0: 0018 movs r0, r3 - 800e5a2: 46bd mov sp, r7 - 800e5a4: b004 add sp, #16 - 800e5a6: bd80 pop {r7, pc} - -0800e5a8 : -/*-----------------------------------------------------------*/ - -void *pvTimerGetTimerID( const TimerHandle_t xTimer ) -{ - 800e5a8: b580 push {r7, lr} - 800e5aa: b084 sub sp, #16 - 800e5ac: af00 add r7, sp, #0 - 800e5ae: 6078 str r0, [r7, #4] -Timer_t * const pxTimer = xTimer; - 800e5b0: 687b ldr r3, [r7, #4] - 800e5b2: 60fb str r3, [r7, #12] -void *pvReturn; - - configASSERT( xTimer ); - 800e5b4: 687b ldr r3, [r7, #4] - 800e5b6: 2b00 cmp r3, #0 - 800e5b8: d101 bne.n 800e5be - 800e5ba: b672 cpsid i - 800e5bc: e7fe b.n 800e5bc - - taskENTER_CRITICAL(); - 800e5be: f000 f8a7 bl 800e710 - { - pvReturn = pxTimer->pvTimerID; - 800e5c2: 68fb ldr r3, [r7, #12] - 800e5c4: 69db ldr r3, [r3, #28] - 800e5c6: 60bb str r3, [r7, #8] - } - taskEXIT_CRITICAL(); - 800e5c8: f000 f8b4 bl 800e734 - - return pvReturn; - 800e5cc: 68bb ldr r3, [r7, #8] -} - 800e5ce: 0018 movs r0, r3 - 800e5d0: 46bd mov sp, r7 - 800e5d2: b004 add sp, #16 - 800e5d4: bd80 pop {r7, pc} - ... - -0800e5d8 : - -/* - * See header file for description. - */ -StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) -{ - 800e5d8: b580 push {r7, lr} - 800e5da: b084 sub sp, #16 - 800e5dc: af00 add r7, sp, #0 - 800e5de: 60f8 str r0, [r7, #12] - 800e5e0: 60b9 str r1, [r7, #8] - 800e5e2: 607a str r2, [r7, #4] - /* Simulate the stack frame as it would be created by a context switch - interrupt. */ - pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */ - 800e5e4: 68fb ldr r3, [r7, #12] - 800e5e6: 3b04 subs r3, #4 - 800e5e8: 60fb str r3, [r7, #12] - *pxTopOfStack = portINITIAL_XPSR; /* xPSR */ - 800e5ea: 68fb ldr r3, [r7, #12] - 800e5ec: 2280 movs r2, #128 ; 0x80 - 800e5ee: 0452 lsls r2, r2, #17 - 800e5f0: 601a str r2, [r3, #0] - pxTopOfStack--; - 800e5f2: 68fb ldr r3, [r7, #12] - 800e5f4: 3b04 subs r3, #4 - 800e5f6: 60fb str r3, [r7, #12] - *pxTopOfStack = ( StackType_t ) pxCode; /* PC */ - 800e5f8: 68ba ldr r2, [r7, #8] - 800e5fa: 68fb ldr r3, [r7, #12] - 800e5fc: 601a str r2, [r3, #0] - pxTopOfStack--; - 800e5fe: 68fb ldr r3, [r7, #12] - 800e600: 3b04 subs r3, #4 - 800e602: 60fb str r3, [r7, #12] - *pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS; /* LR */ - 800e604: 4a08 ldr r2, [pc, #32] ; (800e628 ) - 800e606: 68fb ldr r3, [r7, #12] - 800e608: 601a str r2, [r3, #0] - pxTopOfStack -= 5; /* R12, R3, R2 and R1. */ - 800e60a: 68fb ldr r3, [r7, #12] - 800e60c: 3b14 subs r3, #20 - 800e60e: 60fb str r3, [r7, #12] - *pxTopOfStack = ( StackType_t ) pvParameters; /* R0 */ - 800e610: 687a ldr r2, [r7, #4] - 800e612: 68fb ldr r3, [r7, #12] - 800e614: 601a str r2, [r3, #0] - pxTopOfStack -= 8; /* R11..R4. */ - 800e616: 68fb ldr r3, [r7, #12] - 800e618: 3b20 subs r3, #32 - 800e61a: 60fb str r3, [r7, #12] - - return pxTopOfStack; - 800e61c: 68fb ldr r3, [r7, #12] -} - 800e61e: 0018 movs r0, r3 - 800e620: 46bd mov sp, r7 - 800e622: b004 add sp, #16 - 800e624: bd80 pop {r7, pc} - 800e626: 46c0 nop ; (mov r8, r8) - 800e628: 0800e62d .word 0x0800e62d - -0800e62c : -/*-----------------------------------------------------------*/ - -static void prvTaskExitError( void ) -{ - 800e62c: b580 push {r7, lr} - 800e62e: b082 sub sp, #8 - 800e630: af00 add r7, sp, #0 -volatile uint32_t ulDummy = 0UL; - 800e632: 2300 movs r3, #0 - 800e634: 607b str r3, [r7, #4] - its caller as there is nothing to return to. If a task wants to exit it - should instead call vTaskDelete( NULL ). - - Artificially force an assert() to be triggered if configASSERT() is - defined, then stop here so application writers can catch the error. */ - configASSERT( uxCriticalNesting == ~0UL ); - 800e636: 4b08 ldr r3, [pc, #32] ; (800e658 ) - 800e638: 681b ldr r3, [r3, #0] - 800e63a: 3301 adds r3, #1 - 800e63c: d001 beq.n 800e642 - 800e63e: b672 cpsid i - 800e640: e7fe b.n 800e640 - portDISABLE_INTERRUPTS(); - 800e642: b672 cpsid i - while( ulDummy == 0 ) - 800e644: 46c0 nop ; (mov r8, r8) - 800e646: 687b ldr r3, [r7, #4] - 800e648: 2b00 cmp r3, #0 - 800e64a: d0fc beq.n 800e646 - about code appearing after this function is called - making ulDummy - volatile makes the compiler think the function could return and - therefore not output an 'unreachable code' warning for code that appears - after it. */ - } -} - 800e64c: 46c0 nop ; (mov r8, r8) - 800e64e: 46c0 nop ; (mov r8, r8) - 800e650: 46bd mov sp, r7 - 800e652: b002 add sp, #8 - 800e654: bd80 pop {r7, pc} - 800e656: 46c0 nop ; (mov r8, r8) - 800e658: 2000004c .word 0x2000004c - -0800e65c : -/*-----------------------------------------------------------*/ - -void vPortSVCHandler( void ) -{ - 800e65c: b580 push {r7, lr} - 800e65e: af00 add r7, sp, #0 - /* This function is no longer used, but retained for backward - compatibility. */ -} - 800e660: 46c0 nop ; (mov r8, r8) - 800e662: 46bd mov sp, r7 - 800e664: bd80 pop {r7, pc} - ... - -0800e670 : -void vPortStartFirstTask( void ) -{ - /* The MSP stack is not reset as, unlike on M3/4 parts, there is no vector - table offset register that can be used to locate the initial stack value. - Not all M0 parts have the application vector table at address 0. */ - __asm volatile( - 800e670: 4a0b ldr r2, [pc, #44] ; (800e6a0 ) - 800e672: 6813 ldr r3, [r2, #0] - 800e674: 6818 ldr r0, [r3, #0] - 800e676: 3020 adds r0, #32 - 800e678: f380 8809 msr PSP, r0 - 800e67c: 2002 movs r0, #2 - 800e67e: f380 8814 msr CONTROL, r0 - 800e682: f3bf 8f6f isb sy - 800e686: bc3f pop {r0, r1, r2, r3, r4, r5} - 800e688: 46ae mov lr, r5 - 800e68a: bc08 pop {r3} - 800e68c: bc04 pop {r2} - 800e68e: b662 cpsie i - 800e690: 4718 bx r3 - 800e692: 46c0 nop ; (mov r8, r8) - 800e694: 46c0 nop ; (mov r8, r8) - 800e696: 46c0 nop ; (mov r8, r8) - 800e698: 46c0 nop ; (mov r8, r8) - 800e69a: 46c0 nop ; (mov r8, r8) - 800e69c: 46c0 nop ; (mov r8, r8) - 800e69e: 46c0 nop ; (mov r8, r8) - -0800e6a0 : - 800e6a0: 20000be4 .word 0x20000be4 - " bx r3 \n" /* Finally, jump to the user defined task code. */ - " \n" - " .align 4 \n" - "pxCurrentTCBConst2: .word pxCurrentTCB " - ); -} - 800e6a4: 46c0 nop ; (mov r8, r8) - 800e6a6: 46c0 nop ; (mov r8, r8) - -0800e6a8 : - -/* - * See header file for description. - */ -BaseType_t xPortStartScheduler( void ) -{ - 800e6a8: b580 push {r7, lr} - 800e6aa: af00 add r7, sp, #0 - /* Make PendSV, CallSV and SysTick the same priority as the kernel. */ - portNVIC_SYSPRI2_REG |= portNVIC_PENDSV_PRI; - 800e6ac: 4b0e ldr r3, [pc, #56] ; (800e6e8 ) - 800e6ae: 681a ldr r2, [r3, #0] - 800e6b0: 4b0d ldr r3, [pc, #52] ; (800e6e8 ) - 800e6b2: 21ff movs r1, #255 ; 0xff - 800e6b4: 0409 lsls r1, r1, #16 - 800e6b6: 430a orrs r2, r1 - 800e6b8: 601a str r2, [r3, #0] - portNVIC_SYSPRI2_REG |= portNVIC_SYSTICK_PRI; - 800e6ba: 4b0b ldr r3, [pc, #44] ; (800e6e8 ) - 800e6bc: 681a ldr r2, [r3, #0] - 800e6be: 4b0a ldr r3, [pc, #40] ; (800e6e8 ) - 800e6c0: 21ff movs r1, #255 ; 0xff - 800e6c2: 0609 lsls r1, r1, #24 - 800e6c4: 430a orrs r2, r1 - 800e6c6: 601a str r2, [r3, #0] - - /* Start the timer that generates the tick ISR. Interrupts are disabled - here already. */ - vPortSetupTimerInterrupt(); - 800e6c8: f000 f898 bl 800e7fc - - /* Initialise the critical nesting count ready for the first task. */ - uxCriticalNesting = 0; - 800e6cc: 4b07 ldr r3, [pc, #28] ; (800e6ec ) - 800e6ce: 2200 movs r2, #0 - 800e6d0: 601a str r2, [r3, #0] - - /* Start the first task. */ - vPortStartFirstTask(); - 800e6d2: f7ff ffcd bl 800e670 - exit error function to prevent compiler warnings about a static function - not being called in the case that the application writer overrides this - functionality by defining configTASK_RETURN_ADDRESS. Call - vTaskSwitchContext() so link time optimisation does not remove the - symbol. */ - vTaskSwitchContext(); - 800e6d6: f7fe ffb9 bl 800d64c - prvTaskExitError(); - 800e6da: f7ff ffa7 bl 800e62c - - /* Should not get here! */ - return 0; - 800e6de: 2300 movs r3, #0 -} - 800e6e0: 0018 movs r0, r3 - 800e6e2: 46bd mov sp, r7 - 800e6e4: bd80 pop {r7, pc} - 800e6e6: 46c0 nop ; (mov r8, r8) - 800e6e8: e000ed20 .word 0xe000ed20 - 800e6ec: 2000004c .word 0x2000004c - -0800e6f0 : - configASSERT( uxCriticalNesting == 1000UL ); -} -/*-----------------------------------------------------------*/ - -void vPortYield( void ) -{ - 800e6f0: b580 push {r7, lr} - 800e6f2: af00 add r7, sp, #0 - /* Set a PendSV to request a context switch. */ - portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; - 800e6f4: 4b05 ldr r3, [pc, #20] ; (800e70c ) - 800e6f6: 2280 movs r2, #128 ; 0x80 - 800e6f8: 0552 lsls r2, r2, #21 - 800e6fa: 601a str r2, [r3, #0] - - /* Barriers are normally not required but do ensure the code is completely - within the specified behaviour for the architecture. */ - __asm volatile( "dsb" ::: "memory" ); - 800e6fc: f3bf 8f4f dsb sy - __asm volatile( "isb" ); - 800e700: f3bf 8f6f isb sy -} - 800e704: 46c0 nop ; (mov r8, r8) - 800e706: 46bd mov sp, r7 - 800e708: bd80 pop {r7, pc} - 800e70a: 46c0 nop ; (mov r8, r8) - 800e70c: e000ed04 .word 0xe000ed04 - -0800e710 : -/*-----------------------------------------------------------*/ - -void vPortEnterCritical( void ) -{ - 800e710: b580 push {r7, lr} - 800e712: af00 add r7, sp, #0 - portDISABLE_INTERRUPTS(); - 800e714: b672 cpsid i - uxCriticalNesting++; - 800e716: 4b06 ldr r3, [pc, #24] ; (800e730 ) - 800e718: 681b ldr r3, [r3, #0] - 800e71a: 1c5a adds r2, r3, #1 - 800e71c: 4b04 ldr r3, [pc, #16] ; (800e730 ) - 800e71e: 601a str r2, [r3, #0] - __asm volatile( "dsb" ::: "memory" ); - 800e720: f3bf 8f4f dsb sy - __asm volatile( "isb" ); - 800e724: f3bf 8f6f isb sy -} - 800e728: 46c0 nop ; (mov r8, r8) - 800e72a: 46bd mov sp, r7 - 800e72c: bd80 pop {r7, pc} - 800e72e: 46c0 nop ; (mov r8, r8) - 800e730: 2000004c .word 0x2000004c - -0800e734 : -/*-----------------------------------------------------------*/ - -void vPortExitCritical( void ) -{ - 800e734: b580 push {r7, lr} - 800e736: af00 add r7, sp, #0 - configASSERT( uxCriticalNesting ); - 800e738: 4b09 ldr r3, [pc, #36] ; (800e760 ) - 800e73a: 681b ldr r3, [r3, #0] - 800e73c: 2b00 cmp r3, #0 - 800e73e: d101 bne.n 800e744 - 800e740: b672 cpsid i - 800e742: e7fe b.n 800e742 - uxCriticalNesting--; - 800e744: 4b06 ldr r3, [pc, #24] ; (800e760 ) - 800e746: 681b ldr r3, [r3, #0] - 800e748: 1e5a subs r2, r3, #1 - 800e74a: 4b05 ldr r3, [pc, #20] ; (800e760 ) - 800e74c: 601a str r2, [r3, #0] - if( uxCriticalNesting == 0 ) - 800e74e: 4b04 ldr r3, [pc, #16] ; (800e760 ) - 800e750: 681b ldr r3, [r3, #0] - 800e752: 2b00 cmp r3, #0 - 800e754: d100 bne.n 800e758 - { - portENABLE_INTERRUPTS(); - 800e756: b662 cpsie i - } -} - 800e758: 46c0 nop ; (mov r8, r8) - 800e75a: 46bd mov sp, r7 - 800e75c: bd80 pop {r7, pc} - 800e75e: 46c0 nop ; (mov r8, r8) - 800e760: 2000004c .word 0x2000004c - -0800e764 : -/*-----------------------------------------------------------*/ - -uint32_t ulSetInterruptMaskFromISR( void ) -{ - __asm volatile( - 800e764: f3ef 8010 mrs r0, PRIMASK - 800e768: b672 cpsid i - 800e76a: 4770 bx lr - " mrs r0, PRIMASK \n" - " cpsid i \n" - " bx lr " - ::: "memory" - ); -} - 800e76c: 46c0 nop ; (mov r8, r8) - 800e76e: 0018 movs r0, r3 - -0800e770 : -/*-----------------------------------------------------------*/ - -void vClearInterruptMaskFromISR( __attribute__( ( unused ) ) uint32_t ulMask ) -{ - __asm volatile( - 800e770: f380 8810 msr PRIMASK, r0 - 800e774: 4770 bx lr - " msr PRIMASK, r0 \n" - " bx lr " - ::: "memory" - ); -} - 800e776: 46c0 nop ; (mov r8, r8) - ... - -0800e780 : - -void xPortPendSVHandler( void ) -{ - /* This is a naked function. */ - - __asm volatile - 800e780: f3ef 8009 mrs r0, PSP - 800e784: 4b0e ldr r3, [pc, #56] ; (800e7c0 ) - 800e786: 681a ldr r2, [r3, #0] - 800e788: 3820 subs r0, #32 - 800e78a: 6010 str r0, [r2, #0] - 800e78c: c0f0 stmia r0!, {r4, r5, r6, r7} - 800e78e: 4644 mov r4, r8 - 800e790: 464d mov r5, r9 - 800e792: 4656 mov r6, sl - 800e794: 465f mov r7, fp - 800e796: c0f0 stmia r0!, {r4, r5, r6, r7} - 800e798: b508 push {r3, lr} - 800e79a: b672 cpsid i - 800e79c: f7fe ff56 bl 800d64c - 800e7a0: b662 cpsie i - 800e7a2: bc0c pop {r2, r3} - 800e7a4: 6811 ldr r1, [r2, #0] - 800e7a6: 6808 ldr r0, [r1, #0] - 800e7a8: 3010 adds r0, #16 - 800e7aa: c8f0 ldmia r0!, {r4, r5, r6, r7} - 800e7ac: 46a0 mov r8, r4 - 800e7ae: 46a9 mov r9, r5 - 800e7b0: 46b2 mov sl, r6 - 800e7b2: 46bb mov fp, r7 - 800e7b4: f380 8809 msr PSP, r0 - 800e7b8: 3820 subs r0, #32 - 800e7ba: c8f0 ldmia r0!, {r4, r5, r6, r7} - 800e7bc: 4718 bx r3 - 800e7be: 46c0 nop ; (mov r8, r8) - -0800e7c0 : - 800e7c0: 20000be4 .word 0x20000be4 - " bx r3 \n" - " \n" - " .align 4 \n" - "pxCurrentTCBConst: .word pxCurrentTCB " - ); -} - 800e7c4: 46c0 nop ; (mov r8, r8) - 800e7c6: 46c0 nop ; (mov r8, r8) - -0800e7c8 : -/*-----------------------------------------------------------*/ - -void xPortSysTickHandler( void ) -{ - 800e7c8: b580 push {r7, lr} - 800e7ca: b082 sub sp, #8 - 800e7cc: af00 add r7, sp, #0 -uint32_t ulPreviousMask; - - ulPreviousMask = portSET_INTERRUPT_MASK_FROM_ISR(); - 800e7ce: f7ff ffc9 bl 800e764 - 800e7d2: 0003 movs r3, r0 - 800e7d4: 607b str r3, [r7, #4] - { - /* Increment the RTOS tick. */ - if( xTaskIncrementTick() != pdFALSE ) - 800e7d6: f7fe fe89 bl 800d4ec - 800e7da: 1e03 subs r3, r0, #0 - 800e7dc: d003 beq.n 800e7e6 - { - /* Pend a context switch. */ - portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; - 800e7de: 4b06 ldr r3, [pc, #24] ; (800e7f8 ) - 800e7e0: 2280 movs r2, #128 ; 0x80 - 800e7e2: 0552 lsls r2, r2, #21 - 800e7e4: 601a str r2, [r3, #0] - } - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( ulPreviousMask ); - 800e7e6: 687b ldr r3, [r7, #4] - 800e7e8: 0018 movs r0, r3 - 800e7ea: f7ff ffc1 bl 800e770 -} - 800e7ee: 46c0 nop ; (mov r8, r8) - 800e7f0: 46bd mov sp, r7 - 800e7f2: b002 add sp, #8 - 800e7f4: bd80 pop {r7, pc} - 800e7f6: 46c0 nop ; (mov r8, r8) - 800e7f8: e000ed04 .word 0xe000ed04 - -0800e7fc : -/* - * Setup the systick timer to generate the tick interrupts at the required - * frequency. - */ -__attribute__(( weak )) void vPortSetupTimerInterrupt( void ) -{ - 800e7fc: b580 push {r7, lr} - 800e7fe: af00 add r7, sp, #0 - ulStoppedTimerCompensation = portMISSED_COUNTS_FACTOR; - } - #endif /* configUSE_TICKLESS_IDLE */ - - /* Stop and reset the SysTick. */ - portNVIC_SYSTICK_CTRL_REG = 0UL; - 800e800: 4b0b ldr r3, [pc, #44] ; (800e830 ) - 800e802: 2200 movs r2, #0 - 800e804: 601a str r2, [r3, #0] - portNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL; - 800e806: 4b0b ldr r3, [pc, #44] ; (800e834 ) - 800e808: 2200 movs r2, #0 - 800e80a: 601a str r2, [r3, #0] - - /* Configure SysTick to interrupt at the requested rate. */ - portNVIC_SYSTICK_LOAD_REG = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL; - 800e80c: 4b0a ldr r3, [pc, #40] ; (800e838 ) - 800e80e: 681b ldr r3, [r3, #0] - 800e810: 22fa movs r2, #250 ; 0xfa - 800e812: 0091 lsls r1, r2, #2 - 800e814: 0018 movs r0, r3 - 800e816: f7f1 fc89 bl 800012c <__udivsi3> - 800e81a: 0003 movs r3, r0 - 800e81c: 001a movs r2, r3 - 800e81e: 4b07 ldr r3, [pc, #28] ; (800e83c ) - 800e820: 3a01 subs r2, #1 - 800e822: 601a str r2, [r3, #0] - portNVIC_SYSTICK_CTRL_REG = portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT; - 800e824: 4b02 ldr r3, [pc, #8] ; (800e830 ) - 800e826: 2207 movs r2, #7 - 800e828: 601a str r2, [r3, #0] -} - 800e82a: 46c0 nop ; (mov r8, r8) - 800e82c: 46bd mov sp, r7 - 800e82e: bd80 pop {r7, pc} - 800e830: e000e010 .word 0xe000e010 - 800e834: e000e018 .word 0xe000e018 - 800e838: 20000040 .word 0x20000040 - 800e83c: e000e014 .word 0xe000e014 - -0800e840 : -static size_t xBlockAllocatedBit = 0; - -/*-----------------------------------------------------------*/ - -void *pvPortMalloc( size_t xWantedSize ) -{ - 800e840: b580 push {r7, lr} - 800e842: b086 sub sp, #24 - 800e844: af00 add r7, sp, #0 - 800e846: 6078 str r0, [r7, #4] -BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink; -void *pvReturn = NULL; - 800e848: 2300 movs r3, #0 - 800e84a: 60fb str r3, [r7, #12] - - vTaskSuspendAll(); - 800e84c: f7fe fda8 bl 800d3a0 - { - /* If this is the first call to malloc then the heap will require - initialisation to setup the list of free blocks. */ - if( pxEnd == NULL ) - 800e850: 4b4b ldr r3, [pc, #300] ; (800e980 ) - 800e852: 681b ldr r3, [r3, #0] - 800e854: 2b00 cmp r3, #0 - 800e856: d101 bne.n 800e85c - { - prvHeapInit(); - 800e858: f000 f8ec bl 800ea34 - - /* Check the requested block size is not so large that the top bit is - set. The top bit of the block size member of the BlockLink_t structure - is used to determine who owns the block - the application or the - kernel, so it must be free. */ - if( ( xWantedSize & xBlockAllocatedBit ) == 0 ) - 800e85c: 4b49 ldr r3, [pc, #292] ; (800e984 ) - 800e85e: 681b ldr r3, [r3, #0] - 800e860: 687a ldr r2, [r7, #4] - 800e862: 4013 ands r3, r2 - 800e864: d000 beq.n 800e868 - 800e866: e07e b.n 800e966 - { - /* The wanted size is increased so it can contain a BlockLink_t - structure in addition to the requested amount of bytes. */ - if( xWantedSize > 0 ) - 800e868: 687b ldr r3, [r7, #4] - 800e86a: 2b00 cmp r3, #0 - 800e86c: d012 beq.n 800e894 - { - xWantedSize += xHeapStructSize; - 800e86e: 2208 movs r2, #8 - 800e870: 687b ldr r3, [r7, #4] - 800e872: 189b adds r3, r3, r2 - 800e874: 607b str r3, [r7, #4] - - /* Ensure that blocks are always aligned to the required number - of bytes. */ - if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 ) - 800e876: 687b ldr r3, [r7, #4] - 800e878: 2207 movs r2, #7 - 800e87a: 4013 ands r3, r2 - 800e87c: d00a beq.n 800e894 - { - /* Byte alignment required. */ - xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ); - 800e87e: 687b ldr r3, [r7, #4] - 800e880: 2207 movs r2, #7 - 800e882: 4393 bics r3, r2 - 800e884: 3308 adds r3, #8 - 800e886: 607b str r3, [r7, #4] - configASSERT( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) == 0 ); - 800e888: 687b ldr r3, [r7, #4] - 800e88a: 2207 movs r2, #7 - 800e88c: 4013 ands r3, r2 - 800e88e: d001 beq.n 800e894 - 800e890: b672 cpsid i - 800e892: e7fe b.n 800e892 - else - { - mtCOVERAGE_TEST_MARKER(); - } - - if( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) ) - 800e894: 687b ldr r3, [r7, #4] - 800e896: 2b00 cmp r3, #0 - 800e898: d065 beq.n 800e966 - 800e89a: 4b3b ldr r3, [pc, #236] ; (800e988 ) - 800e89c: 681b ldr r3, [r3, #0] - 800e89e: 687a ldr r2, [r7, #4] - 800e8a0: 429a cmp r2, r3 - 800e8a2: d860 bhi.n 800e966 - { - /* Traverse the list from the start (lowest address) block until - one of adequate size is found. */ - pxPreviousBlock = &xStart; - 800e8a4: 4b39 ldr r3, [pc, #228] ; (800e98c ) - 800e8a6: 613b str r3, [r7, #16] - pxBlock = xStart.pxNextFreeBlock; - 800e8a8: 4b38 ldr r3, [pc, #224] ; (800e98c ) - 800e8aa: 681b ldr r3, [r3, #0] - 800e8ac: 617b str r3, [r7, #20] - while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) - 800e8ae: e004 b.n 800e8ba - { - pxPreviousBlock = pxBlock; - 800e8b0: 697b ldr r3, [r7, #20] - 800e8b2: 613b str r3, [r7, #16] - pxBlock = pxBlock->pxNextFreeBlock; - 800e8b4: 697b ldr r3, [r7, #20] - 800e8b6: 681b ldr r3, [r3, #0] - 800e8b8: 617b str r3, [r7, #20] - while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) - 800e8ba: 697b ldr r3, [r7, #20] - 800e8bc: 685b ldr r3, [r3, #4] - 800e8be: 687a ldr r2, [r7, #4] - 800e8c0: 429a cmp r2, r3 - 800e8c2: d903 bls.n 800e8cc - 800e8c4: 697b ldr r3, [r7, #20] - 800e8c6: 681b ldr r3, [r3, #0] - 800e8c8: 2b00 cmp r3, #0 - 800e8ca: d1f1 bne.n 800e8b0 - } - - /* If the end marker was reached then a block of adequate size - was not found. */ - if( pxBlock != pxEnd ) - 800e8cc: 4b2c ldr r3, [pc, #176] ; (800e980 ) - 800e8ce: 681b ldr r3, [r3, #0] - 800e8d0: 697a ldr r2, [r7, #20] - 800e8d2: 429a cmp r2, r3 - 800e8d4: d047 beq.n 800e966 - { - /* Return the memory space pointed to - jumping over the - BlockLink_t structure at its start. */ - pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize ); - 800e8d6: 693b ldr r3, [r7, #16] - 800e8d8: 681b ldr r3, [r3, #0] - 800e8da: 2208 movs r2, #8 - 800e8dc: 189b adds r3, r3, r2 - 800e8de: 60fb str r3, [r7, #12] - - /* This block is being returned for use so must be taken out - of the list of free blocks. */ - pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; - 800e8e0: 697b ldr r3, [r7, #20] - 800e8e2: 681a ldr r2, [r3, #0] - 800e8e4: 693b ldr r3, [r7, #16] - 800e8e6: 601a str r2, [r3, #0] - - /* If the block is larger than required it can be split into - two. */ - if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) - 800e8e8: 697b ldr r3, [r7, #20] - 800e8ea: 685a ldr r2, [r3, #4] - 800e8ec: 687b ldr r3, [r7, #4] - 800e8ee: 1ad2 subs r2, r2, r3 - 800e8f0: 2308 movs r3, #8 - 800e8f2: 005b lsls r3, r3, #1 - 800e8f4: 429a cmp r2, r3 - 800e8f6: d916 bls.n 800e926 - { - /* This block is to be split into two. Create a new - block following the number of bytes requested. The void - cast is used to prevent byte alignment warnings from the - compiler. */ - pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize ); - 800e8f8: 697a ldr r2, [r7, #20] - 800e8fa: 687b ldr r3, [r7, #4] - 800e8fc: 18d3 adds r3, r2, r3 - 800e8fe: 60bb str r3, [r7, #8] - configASSERT( ( ( ( size_t ) pxNewBlockLink ) & portBYTE_ALIGNMENT_MASK ) == 0 ); - 800e900: 68bb ldr r3, [r7, #8] - 800e902: 2207 movs r2, #7 - 800e904: 4013 ands r3, r2 - 800e906: d001 beq.n 800e90c - 800e908: b672 cpsid i - 800e90a: e7fe b.n 800e90a - - /* Calculate the sizes of two blocks split from the - single block. */ - pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; - 800e90c: 697b ldr r3, [r7, #20] - 800e90e: 685a ldr r2, [r3, #4] - 800e910: 687b ldr r3, [r7, #4] - 800e912: 1ad2 subs r2, r2, r3 - 800e914: 68bb ldr r3, [r7, #8] - 800e916: 605a str r2, [r3, #4] - pxBlock->xBlockSize = xWantedSize; - 800e918: 697b ldr r3, [r7, #20] - 800e91a: 687a ldr r2, [r7, #4] - 800e91c: 605a str r2, [r3, #4] - - /* Insert the new block into the list of free blocks. */ - prvInsertBlockIntoFreeList( pxNewBlockLink ); - 800e91e: 68bb ldr r3, [r7, #8] - 800e920: 0018 movs r0, r3 - 800e922: f000 f8e7 bl 800eaf4 - else - { - mtCOVERAGE_TEST_MARKER(); - } - - xFreeBytesRemaining -= pxBlock->xBlockSize; - 800e926: 4b18 ldr r3, [pc, #96] ; (800e988 ) - 800e928: 681a ldr r2, [r3, #0] - 800e92a: 697b ldr r3, [r7, #20] - 800e92c: 685b ldr r3, [r3, #4] - 800e92e: 1ad2 subs r2, r2, r3 - 800e930: 4b15 ldr r3, [pc, #84] ; (800e988 ) - 800e932: 601a str r2, [r3, #0] - - if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining ) - 800e934: 4b14 ldr r3, [pc, #80] ; (800e988 ) - 800e936: 681a ldr r2, [r3, #0] - 800e938: 4b15 ldr r3, [pc, #84] ; (800e990 ) - 800e93a: 681b ldr r3, [r3, #0] - 800e93c: 429a cmp r2, r3 - 800e93e: d203 bcs.n 800e948 - { - xMinimumEverFreeBytesRemaining = xFreeBytesRemaining; - 800e940: 4b11 ldr r3, [pc, #68] ; (800e988 ) - 800e942: 681a ldr r2, [r3, #0] - 800e944: 4b12 ldr r3, [pc, #72] ; (800e990 ) - 800e946: 601a str r2, [r3, #0] - mtCOVERAGE_TEST_MARKER(); - } - - /* The block is being returned - it is allocated and owned - by the application and has no "next" block. */ - pxBlock->xBlockSize |= xBlockAllocatedBit; - 800e948: 697b ldr r3, [r7, #20] - 800e94a: 685a ldr r2, [r3, #4] - 800e94c: 4b0d ldr r3, [pc, #52] ; (800e984 ) - 800e94e: 681b ldr r3, [r3, #0] - 800e950: 431a orrs r2, r3 - 800e952: 697b ldr r3, [r7, #20] - 800e954: 605a str r2, [r3, #4] - pxBlock->pxNextFreeBlock = NULL; - 800e956: 697b ldr r3, [r7, #20] - 800e958: 2200 movs r2, #0 - 800e95a: 601a str r2, [r3, #0] - xNumberOfSuccessfulAllocations++; - 800e95c: 4b0d ldr r3, [pc, #52] ; (800e994 ) - 800e95e: 681b ldr r3, [r3, #0] - 800e960: 1c5a adds r2, r3, #1 - 800e962: 4b0c ldr r3, [pc, #48] ; (800e994 ) - 800e964: 601a str r2, [r3, #0] - mtCOVERAGE_TEST_MARKER(); - } - - traceMALLOC( pvReturn, xWantedSize ); - } - ( void ) xTaskResumeAll(); - 800e966: f7fe fd27 bl 800d3b8 - mtCOVERAGE_TEST_MARKER(); - } - } - #endif - - configASSERT( ( ( ( size_t ) pvReturn ) & ( size_t ) portBYTE_ALIGNMENT_MASK ) == 0 ); - 800e96a: 68fb ldr r3, [r7, #12] - 800e96c: 2207 movs r2, #7 - 800e96e: 4013 ands r3, r2 - 800e970: d001 beq.n 800e976 - 800e972: b672 cpsid i - 800e974: e7fe b.n 800e974 - return pvReturn; - 800e976: 68fb ldr r3, [r7, #12] -} - 800e978: 0018 movs r0, r3 - 800e97a: 46bd mov sp, r7 - 800e97c: b006 add sp, #24 - 800e97e: bd80 pop {r7, pc} - 800e980: 20002a18 .word 0x20002a18 - 800e984: 20002a2c .word 0x20002a2c - 800e988: 20002a1c .word 0x20002a1c - 800e98c: 20002a10 .word 0x20002a10 - 800e990: 20002a20 .word 0x20002a20 - 800e994: 20002a24 .word 0x20002a24 - -0800e998 : -/*-----------------------------------------------------------*/ - -void vPortFree( void *pv ) -{ - 800e998: b580 push {r7, lr} - 800e99a: b084 sub sp, #16 - 800e99c: af00 add r7, sp, #0 - 800e99e: 6078 str r0, [r7, #4] -uint8_t *puc = ( uint8_t * ) pv; - 800e9a0: 687b ldr r3, [r7, #4] - 800e9a2: 60fb str r3, [r7, #12] -BlockLink_t *pxLink; - - if( pv != NULL ) - 800e9a4: 687b ldr r3, [r7, #4] - 800e9a6: 2b00 cmp r3, #0 - 800e9a8: d03a beq.n 800ea20 - { - /* The memory being freed will have an BlockLink_t structure immediately - before it. */ - puc -= xHeapStructSize; - 800e9aa: 2308 movs r3, #8 - 800e9ac: 425b negs r3, r3 - 800e9ae: 68fa ldr r2, [r7, #12] - 800e9b0: 18d3 adds r3, r2, r3 - 800e9b2: 60fb str r3, [r7, #12] - - /* This casting is to keep the compiler from issuing warnings. */ - pxLink = ( void * ) puc; - 800e9b4: 68fb ldr r3, [r7, #12] - 800e9b6: 60bb str r3, [r7, #8] - - /* Check the block is actually allocated. */ - configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ); - 800e9b8: 68bb ldr r3, [r7, #8] - 800e9ba: 685a ldr r2, [r3, #4] - 800e9bc: 4b1a ldr r3, [pc, #104] ; (800ea28 ) - 800e9be: 681b ldr r3, [r3, #0] - 800e9c0: 4013 ands r3, r2 - 800e9c2: d101 bne.n 800e9c8 - 800e9c4: b672 cpsid i - 800e9c6: e7fe b.n 800e9c6 - configASSERT( pxLink->pxNextFreeBlock == NULL ); - 800e9c8: 68bb ldr r3, [r7, #8] - 800e9ca: 681b ldr r3, [r3, #0] - 800e9cc: 2b00 cmp r3, #0 - 800e9ce: d001 beq.n 800e9d4 - 800e9d0: b672 cpsid i - 800e9d2: e7fe b.n 800e9d2 - - if( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ) - 800e9d4: 68bb ldr r3, [r7, #8] - 800e9d6: 685a ldr r2, [r3, #4] - 800e9d8: 4b13 ldr r3, [pc, #76] ; (800ea28 ) - 800e9da: 681b ldr r3, [r3, #0] - 800e9dc: 4013 ands r3, r2 - 800e9de: d01f beq.n 800ea20 - { - if( pxLink->pxNextFreeBlock == NULL ) - 800e9e0: 68bb ldr r3, [r7, #8] - 800e9e2: 681b ldr r3, [r3, #0] - 800e9e4: 2b00 cmp r3, #0 - 800e9e6: d11b bne.n 800ea20 - { - /* The block is being returned to the heap - it is no longer - allocated. */ - pxLink->xBlockSize &= ~xBlockAllocatedBit; - 800e9e8: 68bb ldr r3, [r7, #8] - 800e9ea: 685a ldr r2, [r3, #4] - 800e9ec: 4b0e ldr r3, [pc, #56] ; (800ea28 ) - 800e9ee: 681b ldr r3, [r3, #0] - 800e9f0: 43db mvns r3, r3 - 800e9f2: 401a ands r2, r3 - 800e9f4: 68bb ldr r3, [r7, #8] - 800e9f6: 605a str r2, [r3, #4] - - vTaskSuspendAll(); - 800e9f8: f7fe fcd2 bl 800d3a0 - { - /* Add this block to the list of free blocks. */ - xFreeBytesRemaining += pxLink->xBlockSize; - 800e9fc: 68bb ldr r3, [r7, #8] - 800e9fe: 685a ldr r2, [r3, #4] - 800ea00: 4b0a ldr r3, [pc, #40] ; (800ea2c ) - 800ea02: 681b ldr r3, [r3, #0] - 800ea04: 18d2 adds r2, r2, r3 - 800ea06: 4b09 ldr r3, [pc, #36] ; (800ea2c ) - 800ea08: 601a str r2, [r3, #0] - traceFREE( pv, pxLink->xBlockSize ); - prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) ); - 800ea0a: 68bb ldr r3, [r7, #8] - 800ea0c: 0018 movs r0, r3 - 800ea0e: f000 f871 bl 800eaf4 - xNumberOfSuccessfulFrees++; - 800ea12: 4b07 ldr r3, [pc, #28] ; (800ea30 ) - 800ea14: 681b ldr r3, [r3, #0] - 800ea16: 1c5a adds r2, r3, #1 - 800ea18: 4b05 ldr r3, [pc, #20] ; (800ea30 ) - 800ea1a: 601a str r2, [r3, #0] - } - ( void ) xTaskResumeAll(); - 800ea1c: f7fe fccc bl 800d3b8 - else - { - mtCOVERAGE_TEST_MARKER(); - } - } -} - 800ea20: 46c0 nop ; (mov r8, r8) - 800ea22: 46bd mov sp, r7 - 800ea24: b004 add sp, #16 - 800ea26: bd80 pop {r7, pc} - 800ea28: 20002a2c .word 0x20002a2c - 800ea2c: 20002a1c .word 0x20002a1c - 800ea30: 20002a28 .word 0x20002a28 - -0800ea34 : - /* This just exists to keep the linker quiet. */ -} -/*-----------------------------------------------------------*/ - -static void prvHeapInit( void ) -{ - 800ea34: b580 push {r7, lr} - 800ea36: b084 sub sp, #16 - 800ea38: af00 add r7, sp, #0 -BlockLink_t *pxFirstFreeBlock; -uint8_t *pucAlignedHeap; -size_t uxAddress; -size_t xTotalHeapSize = configTOTAL_HEAP_SIZE; - 800ea3a: 23c0 movs r3, #192 ; 0xc0 - 800ea3c: 015b lsls r3, r3, #5 - 800ea3e: 60bb str r3, [r7, #8] - - /* Ensure the heap starts on a correctly aligned boundary. */ - uxAddress = ( size_t ) ucHeap; - 800ea40: 4b26 ldr r3, [pc, #152] ; (800eadc ) - 800ea42: 60fb str r3, [r7, #12] - - if( ( uxAddress & portBYTE_ALIGNMENT_MASK ) != 0 ) - 800ea44: 68fb ldr r3, [r7, #12] - 800ea46: 2207 movs r2, #7 - 800ea48: 4013 ands r3, r2 - 800ea4a: d00c beq.n 800ea66 - { - uxAddress += ( portBYTE_ALIGNMENT - 1 ); - 800ea4c: 68fb ldr r3, [r7, #12] - 800ea4e: 3307 adds r3, #7 - 800ea50: 60fb str r3, [r7, #12] - uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); - 800ea52: 68fb ldr r3, [r7, #12] - 800ea54: 2207 movs r2, #7 - 800ea56: 4393 bics r3, r2 - 800ea58: 60fb str r3, [r7, #12] - xTotalHeapSize -= uxAddress - ( size_t ) ucHeap; - 800ea5a: 68ba ldr r2, [r7, #8] - 800ea5c: 68fb ldr r3, [r7, #12] - 800ea5e: 1ad2 subs r2, r2, r3 - 800ea60: 4b1e ldr r3, [pc, #120] ; (800eadc ) - 800ea62: 18d3 adds r3, r2, r3 - 800ea64: 60bb str r3, [r7, #8] - } - - pucAlignedHeap = ( uint8_t * ) uxAddress; - 800ea66: 68fb ldr r3, [r7, #12] - 800ea68: 607b str r3, [r7, #4] - - /* xStart is used to hold a pointer to the first item in the list of free - blocks. The void cast is used to prevent compiler warnings. */ - xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap; - 800ea6a: 4b1d ldr r3, [pc, #116] ; (800eae0 ) - 800ea6c: 687a ldr r2, [r7, #4] - 800ea6e: 601a str r2, [r3, #0] - xStart.xBlockSize = ( size_t ) 0; - 800ea70: 4b1b ldr r3, [pc, #108] ; (800eae0 ) - 800ea72: 2200 movs r2, #0 - 800ea74: 605a str r2, [r3, #4] - - /* pxEnd is used to mark the end of the list of free blocks and is inserted - at the end of the heap space. */ - uxAddress = ( ( size_t ) pucAlignedHeap ) + xTotalHeapSize; - 800ea76: 687b ldr r3, [r7, #4] - 800ea78: 68ba ldr r2, [r7, #8] - 800ea7a: 18d3 adds r3, r2, r3 - 800ea7c: 60fb str r3, [r7, #12] - uxAddress -= xHeapStructSize; - 800ea7e: 2208 movs r2, #8 - 800ea80: 68fb ldr r3, [r7, #12] - 800ea82: 1a9b subs r3, r3, r2 - 800ea84: 60fb str r3, [r7, #12] - uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); - 800ea86: 68fb ldr r3, [r7, #12] - 800ea88: 2207 movs r2, #7 - 800ea8a: 4393 bics r3, r2 - 800ea8c: 60fb str r3, [r7, #12] - pxEnd = ( void * ) uxAddress; - 800ea8e: 68fa ldr r2, [r7, #12] - 800ea90: 4b14 ldr r3, [pc, #80] ; (800eae4 ) - 800ea92: 601a str r2, [r3, #0] - pxEnd->xBlockSize = 0; - 800ea94: 4b13 ldr r3, [pc, #76] ; (800eae4 ) - 800ea96: 681b ldr r3, [r3, #0] - 800ea98: 2200 movs r2, #0 - 800ea9a: 605a str r2, [r3, #4] - pxEnd->pxNextFreeBlock = NULL; - 800ea9c: 4b11 ldr r3, [pc, #68] ; (800eae4 ) - 800ea9e: 681b ldr r3, [r3, #0] - 800eaa0: 2200 movs r2, #0 - 800eaa2: 601a str r2, [r3, #0] - - /* To start with there is a single free block that is sized to take up the - entire heap space, minus the space taken by pxEnd. */ - pxFirstFreeBlock = ( void * ) pucAlignedHeap; - 800eaa4: 687b ldr r3, [r7, #4] - 800eaa6: 603b str r3, [r7, #0] - pxFirstFreeBlock->xBlockSize = uxAddress - ( size_t ) pxFirstFreeBlock; - 800eaa8: 683b ldr r3, [r7, #0] - 800eaaa: 68fa ldr r2, [r7, #12] - 800eaac: 1ad2 subs r2, r2, r3 - 800eaae: 683b ldr r3, [r7, #0] - 800eab0: 605a str r2, [r3, #4] - pxFirstFreeBlock->pxNextFreeBlock = pxEnd; - 800eab2: 4b0c ldr r3, [pc, #48] ; (800eae4 ) - 800eab4: 681a ldr r2, [r3, #0] - 800eab6: 683b ldr r3, [r7, #0] - 800eab8: 601a str r2, [r3, #0] - - /* Only one block exists - and it covers the entire usable heap space. */ - xMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; - 800eaba: 683b ldr r3, [r7, #0] - 800eabc: 685a ldr r2, [r3, #4] - 800eabe: 4b0a ldr r3, [pc, #40] ; (800eae8 ) - 800eac0: 601a str r2, [r3, #0] - xFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; - 800eac2: 683b ldr r3, [r7, #0] - 800eac4: 685a ldr r2, [r3, #4] - 800eac6: 4b09 ldr r3, [pc, #36] ; (800eaec ) - 800eac8: 601a str r2, [r3, #0] - - /* Work out the position of the top bit in a size_t variable. */ - xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 ); - 800eaca: 4b09 ldr r3, [pc, #36] ; (800eaf0 ) - 800eacc: 2280 movs r2, #128 ; 0x80 - 800eace: 0612 lsls r2, r2, #24 - 800ead0: 601a str r2, [r3, #0] -} - 800ead2: 46c0 nop ; (mov r8, r8) - 800ead4: 46bd mov sp, r7 - 800ead6: b004 add sp, #16 - 800ead8: bd80 pop {r7, pc} - 800eada: 46c0 nop ; (mov r8, r8) - 800eadc: 20001210 .word 0x20001210 - 800eae0: 20002a10 .word 0x20002a10 - 800eae4: 20002a18 .word 0x20002a18 - 800eae8: 20002a20 .word 0x20002a20 - 800eaec: 20002a1c .word 0x20002a1c - 800eaf0: 20002a2c .word 0x20002a2c - -0800eaf4 : -/*-----------------------------------------------------------*/ - -static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ) -{ - 800eaf4: b580 push {r7, lr} - 800eaf6: b084 sub sp, #16 - 800eaf8: af00 add r7, sp, #0 - 800eafa: 6078 str r0, [r7, #4] -BlockLink_t *pxIterator; -uint8_t *puc; - - /* Iterate through the list until a block is found that has a higher address - than the block being inserted. */ - for( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock ) - 800eafc: 4b27 ldr r3, [pc, #156] ; (800eb9c ) - 800eafe: 60fb str r3, [r7, #12] - 800eb00: e002 b.n 800eb08 - 800eb02: 68fb ldr r3, [r7, #12] - 800eb04: 681b ldr r3, [r3, #0] - 800eb06: 60fb str r3, [r7, #12] - 800eb08: 68fb ldr r3, [r7, #12] - 800eb0a: 681b ldr r3, [r3, #0] - 800eb0c: 687a ldr r2, [r7, #4] - 800eb0e: 429a cmp r2, r3 - 800eb10: d8f7 bhi.n 800eb02 - /* Nothing to do here, just iterate to the right position. */ - } - - /* Do the block being inserted, and the block it is being inserted after - make a contiguous block of memory? */ - puc = ( uint8_t * ) pxIterator; - 800eb12: 68fb ldr r3, [r7, #12] - 800eb14: 60bb str r3, [r7, #8] - if( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert ) - 800eb16: 68fb ldr r3, [r7, #12] - 800eb18: 685b ldr r3, [r3, #4] - 800eb1a: 68ba ldr r2, [r7, #8] - 800eb1c: 18d3 adds r3, r2, r3 - 800eb1e: 687a ldr r2, [r7, #4] - 800eb20: 429a cmp r2, r3 - 800eb22: d108 bne.n 800eb36 - { - pxIterator->xBlockSize += pxBlockToInsert->xBlockSize; - 800eb24: 68fb ldr r3, [r7, #12] - 800eb26: 685a ldr r2, [r3, #4] - 800eb28: 687b ldr r3, [r7, #4] - 800eb2a: 685b ldr r3, [r3, #4] - 800eb2c: 18d2 adds r2, r2, r3 - 800eb2e: 68fb ldr r3, [r7, #12] - 800eb30: 605a str r2, [r3, #4] - pxBlockToInsert = pxIterator; - 800eb32: 68fb ldr r3, [r7, #12] - 800eb34: 607b str r3, [r7, #4] - mtCOVERAGE_TEST_MARKER(); - } - - /* Do the block being inserted, and the block it is being inserted before - make a contiguous block of memory? */ - puc = ( uint8_t * ) pxBlockToInsert; - 800eb36: 687b ldr r3, [r7, #4] - 800eb38: 60bb str r3, [r7, #8] - if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock ) - 800eb3a: 687b ldr r3, [r7, #4] - 800eb3c: 685b ldr r3, [r3, #4] - 800eb3e: 68ba ldr r2, [r7, #8] - 800eb40: 18d2 adds r2, r2, r3 - 800eb42: 68fb ldr r3, [r7, #12] - 800eb44: 681b ldr r3, [r3, #0] - 800eb46: 429a cmp r2, r3 - 800eb48: d118 bne.n 800eb7c - { - if( pxIterator->pxNextFreeBlock != pxEnd ) - 800eb4a: 68fb ldr r3, [r7, #12] - 800eb4c: 681a ldr r2, [r3, #0] - 800eb4e: 4b14 ldr r3, [pc, #80] ; (800eba0 ) - 800eb50: 681b ldr r3, [r3, #0] - 800eb52: 429a cmp r2, r3 - 800eb54: d00d beq.n 800eb72 - { - /* Form one big block from the two blocks. */ - pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize; - 800eb56: 687b ldr r3, [r7, #4] - 800eb58: 685a ldr r2, [r3, #4] - 800eb5a: 68fb ldr r3, [r7, #12] - 800eb5c: 681b ldr r3, [r3, #0] - 800eb5e: 685b ldr r3, [r3, #4] - 800eb60: 18d2 adds r2, r2, r3 - 800eb62: 687b ldr r3, [r7, #4] - 800eb64: 605a str r2, [r3, #4] - pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock; - 800eb66: 68fb ldr r3, [r7, #12] - 800eb68: 681b ldr r3, [r3, #0] - 800eb6a: 681a ldr r2, [r3, #0] - 800eb6c: 687b ldr r3, [r7, #4] - 800eb6e: 601a str r2, [r3, #0] - 800eb70: e008 b.n 800eb84 - } - else - { - pxBlockToInsert->pxNextFreeBlock = pxEnd; - 800eb72: 4b0b ldr r3, [pc, #44] ; (800eba0 ) - 800eb74: 681a ldr r2, [r3, #0] - 800eb76: 687b ldr r3, [r7, #4] - 800eb78: 601a str r2, [r3, #0] - 800eb7a: e003 b.n 800eb84 - } - } - else - { - pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; - 800eb7c: 68fb ldr r3, [r7, #12] - 800eb7e: 681a ldr r2, [r3, #0] - 800eb80: 687b ldr r3, [r7, #4] - 800eb82: 601a str r2, [r3, #0] - - /* If the block being inserted plugged a gab, so was merged with the block - before and the block after, then it's pxNextFreeBlock pointer will have - already been set, and should not be set here as that would make it point - to itself. */ - if( pxIterator != pxBlockToInsert ) - 800eb84: 68fa ldr r2, [r7, #12] - 800eb86: 687b ldr r3, [r7, #4] - 800eb88: 429a cmp r2, r3 - 800eb8a: d002 beq.n 800eb92 - { - pxIterator->pxNextFreeBlock = pxBlockToInsert; - 800eb8c: 68fb ldr r3, [r7, #12] - 800eb8e: 687a ldr r2, [r7, #4] - 800eb90: 601a str r2, [r3, #0] - } - else - { - mtCOVERAGE_TEST_MARKER(); - } -} - 800eb92: 46c0 nop ; (mov r8, r8) - 800eb94: 46bd mov sp, r7 - 800eb96: b004 add sp, #16 - 800eb98: bd80 pop {r7, pc} - 800eb9a: 46c0 nop ; (mov r8, r8) - 800eb9c: 20002a10 .word 0x20002a10 - 800eba0: 20002a18 .word 0x20002a18 - -0800eba4 <__errno>: - 800eba4: 4b01 ldr r3, [pc, #4] ; (800ebac <__errno+0x8>) - 800eba6: 6818 ldr r0, [r3, #0] - 800eba8: 4770 bx lr - 800ebaa: 46c0 nop ; (mov r8, r8) - 800ebac: 20000050 .word 0x20000050 - -0800ebb0 <__libc_init_array>: - 800ebb0: b570 push {r4, r5, r6, lr} - 800ebb2: 2600 movs r6, #0 - 800ebb4: 4d0c ldr r5, [pc, #48] ; (800ebe8 <__libc_init_array+0x38>) - 800ebb6: 4c0d ldr r4, [pc, #52] ; (800ebec <__libc_init_array+0x3c>) - 800ebb8: 1b64 subs r4, r4, r5 - 800ebba: 10a4 asrs r4, r4, #2 - 800ebbc: 42a6 cmp r6, r4 - 800ebbe: d109 bne.n 800ebd4 <__libc_init_array+0x24> - 800ebc0: 2600 movs r6, #0 - 800ebc2: f000 fd13 bl 800f5ec <_init> - 800ebc6: 4d0a ldr r5, [pc, #40] ; (800ebf0 <__libc_init_array+0x40>) - 800ebc8: 4c0a ldr r4, [pc, #40] ; (800ebf4 <__libc_init_array+0x44>) - 800ebca: 1b64 subs r4, r4, r5 - 800ebcc: 10a4 asrs r4, r4, #2 - 800ebce: 42a6 cmp r6, r4 - 800ebd0: d105 bne.n 800ebde <__libc_init_array+0x2e> - 800ebd2: bd70 pop {r4, r5, r6, pc} - 800ebd4: 00b3 lsls r3, r6, #2 - 800ebd6: 58eb ldr r3, [r5, r3] - 800ebd8: 4798 blx r3 - 800ebda: 3601 adds r6, #1 - 800ebdc: e7ee b.n 800ebbc <__libc_init_array+0xc> - 800ebde: 00b3 lsls r3, r6, #2 - 800ebe0: 58eb ldr r3, [r5, r3] - 800ebe2: 4798 blx r3 - 800ebe4: 3601 adds r6, #1 - 800ebe6: e7f2 b.n 800ebce <__libc_init_array+0x1e> - 800ebe8: 08011018 .word 0x08011018 - 800ebec: 08011018 .word 0x08011018 - 800ebf0: 08011018 .word 0x08011018 - 800ebf4: 0801101c .word 0x0801101c - -0800ebf8 <__retarget_lock_acquire_recursive>: - 800ebf8: 4770 bx lr - -0800ebfa <__retarget_lock_release_recursive>: - 800ebfa: 4770 bx lr - -0800ebfc : - 800ebfc: 2300 movs r3, #0 - 800ebfe: b510 push {r4, lr} - 800ec00: 429a cmp r2, r3 - 800ec02: d100 bne.n 800ec06 - 800ec04: bd10 pop {r4, pc} - 800ec06: 5ccc ldrb r4, [r1, r3] - 800ec08: 54c4 strb r4, [r0, r3] - 800ec0a: 3301 adds r3, #1 - 800ec0c: e7f8 b.n 800ec00 - -0800ec0e : - 800ec0e: 0003 movs r3, r0 - 800ec10: 1882 adds r2, r0, r2 - 800ec12: 4293 cmp r3, r2 - 800ec14: d100 bne.n 800ec18 - 800ec16: 4770 bx lr - 800ec18: 7019 strb r1, [r3, #0] - 800ec1a: 3301 adds r3, #1 - 800ec1c: e7f9 b.n 800ec12 - ... - -0800ec20 : - 800ec20: b570 push {r4, r5, r6, lr} - 800ec22: 4e0f ldr r6, [pc, #60] ; (800ec60 ) - 800ec24: 000d movs r5, r1 - 800ec26: 6831 ldr r1, [r6, #0] - 800ec28: 0004 movs r4, r0 - 800ec2a: 2900 cmp r1, #0 - 800ec2c: d102 bne.n 800ec34 - 800ec2e: f000 f903 bl 800ee38 <_sbrk_r> - 800ec32: 6030 str r0, [r6, #0] - 800ec34: 0029 movs r1, r5 - 800ec36: 0020 movs r0, r4 - 800ec38: f000 f8fe bl 800ee38 <_sbrk_r> - 800ec3c: 1c43 adds r3, r0, #1 - 800ec3e: d00a beq.n 800ec56 - 800ec40: 2303 movs r3, #3 - 800ec42: 1cc5 adds r5, r0, #3 - 800ec44: 439d bics r5, r3 - 800ec46: 42a8 cmp r0, r5 - 800ec48: d007 beq.n 800ec5a - 800ec4a: 1a29 subs r1, r5, r0 - 800ec4c: 0020 movs r0, r4 - 800ec4e: f000 f8f3 bl 800ee38 <_sbrk_r> - 800ec52: 1c43 adds r3, r0, #1 - 800ec54: d101 bne.n 800ec5a - 800ec56: 2501 movs r5, #1 - 800ec58: 426d negs r5, r5 - 800ec5a: 0028 movs r0, r5 - 800ec5c: bd70 pop {r4, r5, r6, pc} - 800ec5e: 46c0 nop ; (mov r8, r8) - 800ec60: 20002a38 .word 0x20002a38 - -0800ec64 <_malloc_r>: - 800ec64: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 800ec66: 2203 movs r2, #3 - 800ec68: 1ccb adds r3, r1, #3 - 800ec6a: 4393 bics r3, r2 - 800ec6c: 3308 adds r3, #8 - 800ec6e: 0006 movs r6, r0 - 800ec70: 001f movs r7, r3 - 800ec72: 2b0c cmp r3, #12 - 800ec74: d232 bcs.n 800ecdc <_malloc_r+0x78> - 800ec76: 270c movs r7, #12 - 800ec78: 42b9 cmp r1, r7 - 800ec7a: d831 bhi.n 800ece0 <_malloc_r+0x7c> - 800ec7c: 0030 movs r0, r6 - 800ec7e: f000 f921 bl 800eec4 <__malloc_lock> - 800ec82: 4d32 ldr r5, [pc, #200] ; (800ed4c <_malloc_r+0xe8>) - 800ec84: 682b ldr r3, [r5, #0] - 800ec86: 001c movs r4, r3 - 800ec88: 2c00 cmp r4, #0 - 800ec8a: d12e bne.n 800ecea <_malloc_r+0x86> - 800ec8c: 0039 movs r1, r7 - 800ec8e: 0030 movs r0, r6 - 800ec90: f7ff ffc6 bl 800ec20 - 800ec94: 0004 movs r4, r0 - 800ec96: 1c43 adds r3, r0, #1 - 800ec98: d11e bne.n 800ecd8 <_malloc_r+0x74> - 800ec9a: 682c ldr r4, [r5, #0] - 800ec9c: 0025 movs r5, r4 - 800ec9e: 2d00 cmp r5, #0 - 800eca0: d14a bne.n 800ed38 <_malloc_r+0xd4> - 800eca2: 6823 ldr r3, [r4, #0] - 800eca4: 0029 movs r1, r5 - 800eca6: 18e3 adds r3, r4, r3 - 800eca8: 0030 movs r0, r6 - 800ecaa: 9301 str r3, [sp, #4] - 800ecac: f000 f8c4 bl 800ee38 <_sbrk_r> - 800ecb0: 9b01 ldr r3, [sp, #4] - 800ecb2: 4283 cmp r3, r0 - 800ecb4: d143 bne.n 800ed3e <_malloc_r+0xda> - 800ecb6: 6823 ldr r3, [r4, #0] - 800ecb8: 3703 adds r7, #3 - 800ecba: 1aff subs r7, r7, r3 - 800ecbc: 2303 movs r3, #3 - 800ecbe: 439f bics r7, r3 - 800ecc0: 3708 adds r7, #8 - 800ecc2: 2f0c cmp r7, #12 - 800ecc4: d200 bcs.n 800ecc8 <_malloc_r+0x64> - 800ecc6: 270c movs r7, #12 - 800ecc8: 0039 movs r1, r7 - 800ecca: 0030 movs r0, r6 - 800eccc: f7ff ffa8 bl 800ec20 - 800ecd0: 1c43 adds r3, r0, #1 - 800ecd2: d034 beq.n 800ed3e <_malloc_r+0xda> - 800ecd4: 6823 ldr r3, [r4, #0] - 800ecd6: 19df adds r7, r3, r7 - 800ecd8: 6027 str r7, [r4, #0] - 800ecda: e013 b.n 800ed04 <_malloc_r+0xa0> - 800ecdc: 2b00 cmp r3, #0 - 800ecde: dacb bge.n 800ec78 <_malloc_r+0x14> - 800ece0: 230c movs r3, #12 - 800ece2: 2500 movs r5, #0 - 800ece4: 6033 str r3, [r6, #0] - 800ece6: 0028 movs r0, r5 - 800ece8: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} - 800ecea: 6822 ldr r2, [r4, #0] - 800ecec: 1bd1 subs r1, r2, r7 - 800ecee: d420 bmi.n 800ed32 <_malloc_r+0xce> - 800ecf0: 290b cmp r1, #11 - 800ecf2: d917 bls.n 800ed24 <_malloc_r+0xc0> - 800ecf4: 19e2 adds r2, r4, r7 - 800ecf6: 6027 str r7, [r4, #0] - 800ecf8: 42a3 cmp r3, r4 - 800ecfa: d111 bne.n 800ed20 <_malloc_r+0xbc> - 800ecfc: 602a str r2, [r5, #0] - 800ecfe: 6863 ldr r3, [r4, #4] - 800ed00: 6011 str r1, [r2, #0] - 800ed02: 6053 str r3, [r2, #4] - 800ed04: 0030 movs r0, r6 - 800ed06: 0025 movs r5, r4 - 800ed08: f000 f8e4 bl 800eed4 <__malloc_unlock> - 800ed0c: 2207 movs r2, #7 - 800ed0e: 350b adds r5, #11 - 800ed10: 1d23 adds r3, r4, #4 - 800ed12: 4395 bics r5, r2 - 800ed14: 1aea subs r2, r5, r3 - 800ed16: 429d cmp r5, r3 - 800ed18: d0e5 beq.n 800ece6 <_malloc_r+0x82> - 800ed1a: 1b5b subs r3, r3, r5 - 800ed1c: 50a3 str r3, [r4, r2] - 800ed1e: e7e2 b.n 800ece6 <_malloc_r+0x82> - 800ed20: 605a str r2, [r3, #4] - 800ed22: e7ec b.n 800ecfe <_malloc_r+0x9a> - 800ed24: 6862 ldr r2, [r4, #4] - 800ed26: 42a3 cmp r3, r4 - 800ed28: d101 bne.n 800ed2e <_malloc_r+0xca> - 800ed2a: 602a str r2, [r5, #0] - 800ed2c: e7ea b.n 800ed04 <_malloc_r+0xa0> - 800ed2e: 605a str r2, [r3, #4] - 800ed30: e7e8 b.n 800ed04 <_malloc_r+0xa0> - 800ed32: 0023 movs r3, r4 - 800ed34: 6864 ldr r4, [r4, #4] - 800ed36: e7a7 b.n 800ec88 <_malloc_r+0x24> - 800ed38: 002c movs r4, r5 - 800ed3a: 686d ldr r5, [r5, #4] - 800ed3c: e7af b.n 800ec9e <_malloc_r+0x3a> - 800ed3e: 230c movs r3, #12 - 800ed40: 0030 movs r0, r6 - 800ed42: 6033 str r3, [r6, #0] - 800ed44: f000 f8c6 bl 800eed4 <__malloc_unlock> - 800ed48: e7cd b.n 800ece6 <_malloc_r+0x82> - 800ed4a: 46c0 nop ; (mov r8, r8) - 800ed4c: 20002a34 .word 0x20002a34 - -0800ed50 : - 800ed50: b570 push {r4, r5, r6, lr} - 800ed52: 000d movs r5, r1 - 800ed54: 6809 ldr r1, [r1, #0] - 800ed56: 0004 movs r4, r0 - 800ed58: 2900 cmp r1, #0 - 800ed5a: d001 beq.n 800ed60 - 800ed5c: f7ff fff8 bl 800ed50 - 800ed60: 0029 movs r1, r5 - 800ed62: 0020 movs r0, r4 - 800ed64: f000 f8be bl 800eee4 <_free_r> - 800ed68: bd70 pop {r4, r5, r6, pc} - ... - -0800ed6c <_reclaim_reent>: - 800ed6c: 4b31 ldr r3, [pc, #196] ; (800ee34 <_reclaim_reent+0xc8>) - 800ed6e: b570 push {r4, r5, r6, lr} - 800ed70: 681b ldr r3, [r3, #0] - 800ed72: 0004 movs r4, r0 - 800ed74: 4283 cmp r3, r0 - 800ed76: d049 beq.n 800ee0c <_reclaim_reent+0xa0> - 800ed78: 6a43 ldr r3, [r0, #36] ; 0x24 - 800ed7a: 2b00 cmp r3, #0 - 800ed7c: d00a beq.n 800ed94 <_reclaim_reent+0x28> - 800ed7e: 2500 movs r5, #0 - 800ed80: 68db ldr r3, [r3, #12] - 800ed82: 42ab cmp r3, r5 - 800ed84: d147 bne.n 800ee16 <_reclaim_reent+0xaa> - 800ed86: 6a63 ldr r3, [r4, #36] ; 0x24 - 800ed88: 6819 ldr r1, [r3, #0] - 800ed8a: 2900 cmp r1, #0 - 800ed8c: d002 beq.n 800ed94 <_reclaim_reent+0x28> - 800ed8e: 0020 movs r0, r4 - 800ed90: f000 f8a8 bl 800eee4 <_free_r> - 800ed94: 6961 ldr r1, [r4, #20] - 800ed96: 2900 cmp r1, #0 - 800ed98: d002 beq.n 800eda0 <_reclaim_reent+0x34> - 800ed9a: 0020 movs r0, r4 - 800ed9c: f000 f8a2 bl 800eee4 <_free_r> - 800eda0: 6a61 ldr r1, [r4, #36] ; 0x24 - 800eda2: 2900 cmp r1, #0 - 800eda4: d002 beq.n 800edac <_reclaim_reent+0x40> - 800eda6: 0020 movs r0, r4 - 800eda8: f000 f89c bl 800eee4 <_free_r> - 800edac: 6ba1 ldr r1, [r4, #56] ; 0x38 - 800edae: 2900 cmp r1, #0 - 800edb0: d002 beq.n 800edb8 <_reclaim_reent+0x4c> - 800edb2: 0020 movs r0, r4 - 800edb4: f000 f896 bl 800eee4 <_free_r> - 800edb8: 6be1 ldr r1, [r4, #60] ; 0x3c - 800edba: 2900 cmp r1, #0 - 800edbc: d002 beq.n 800edc4 <_reclaim_reent+0x58> - 800edbe: 0020 movs r0, r4 - 800edc0: f000 f890 bl 800eee4 <_free_r> - 800edc4: 6c21 ldr r1, [r4, #64] ; 0x40 - 800edc6: 2900 cmp r1, #0 - 800edc8: d002 beq.n 800edd0 <_reclaim_reent+0x64> - 800edca: 0020 movs r0, r4 - 800edcc: f000 f88a bl 800eee4 <_free_r> - 800edd0: 6de1 ldr r1, [r4, #92] ; 0x5c - 800edd2: 2900 cmp r1, #0 - 800edd4: d002 beq.n 800eddc <_reclaim_reent+0x70> - 800edd6: 0020 movs r0, r4 - 800edd8: f000 f884 bl 800eee4 <_free_r> - 800eddc: 6da1 ldr r1, [r4, #88] ; 0x58 - 800edde: 2900 cmp r1, #0 - 800ede0: d002 beq.n 800ede8 <_reclaim_reent+0x7c> - 800ede2: 0020 movs r0, r4 - 800ede4: f000 f87e bl 800eee4 <_free_r> - 800ede8: 6b61 ldr r1, [r4, #52] ; 0x34 - 800edea: 2900 cmp r1, #0 - 800edec: d002 beq.n 800edf4 <_reclaim_reent+0x88> - 800edee: 0020 movs r0, r4 - 800edf0: f000 f878 bl 800eee4 <_free_r> - 800edf4: 69a3 ldr r3, [r4, #24] - 800edf6: 2b00 cmp r3, #0 - 800edf8: d008 beq.n 800ee0c <_reclaim_reent+0xa0> - 800edfa: 0020 movs r0, r4 - 800edfc: 6aa3 ldr r3, [r4, #40] ; 0x28 - 800edfe: 4798 blx r3 - 800ee00: 6ca1 ldr r1, [r4, #72] ; 0x48 - 800ee02: 2900 cmp r1, #0 - 800ee04: d002 beq.n 800ee0c <_reclaim_reent+0xa0> - 800ee06: 0020 movs r0, r4 - 800ee08: f7ff ffa2 bl 800ed50 - 800ee0c: bd70 pop {r4, r5, r6, pc} - 800ee0e: 5949 ldr r1, [r1, r5] - 800ee10: 2900 cmp r1, #0 - 800ee12: d108 bne.n 800ee26 <_reclaim_reent+0xba> - 800ee14: 3504 adds r5, #4 - 800ee16: 6a63 ldr r3, [r4, #36] ; 0x24 - 800ee18: 68d9 ldr r1, [r3, #12] - 800ee1a: 2d80 cmp r5, #128 ; 0x80 - 800ee1c: d1f7 bne.n 800ee0e <_reclaim_reent+0xa2> - 800ee1e: 0020 movs r0, r4 - 800ee20: f000 f860 bl 800eee4 <_free_r> - 800ee24: e7af b.n 800ed86 <_reclaim_reent+0x1a> - 800ee26: 680e ldr r6, [r1, #0] - 800ee28: 0020 movs r0, r4 - 800ee2a: f000 f85b bl 800eee4 <_free_r> - 800ee2e: 0031 movs r1, r6 - 800ee30: e7ee b.n 800ee10 <_reclaim_reent+0xa4> - 800ee32: 46c0 nop ; (mov r8, r8) - 800ee34: 20000050 .word 0x20000050 - -0800ee38 <_sbrk_r>: - 800ee38: 2300 movs r3, #0 - 800ee3a: b570 push {r4, r5, r6, lr} - 800ee3c: 4d06 ldr r5, [pc, #24] ; (800ee58 <_sbrk_r+0x20>) - 800ee3e: 0004 movs r4, r0 - 800ee40: 0008 movs r0, r1 - 800ee42: 602b str r3, [r5, #0] - 800ee44: f7f6 fd36 bl 80058b4 <_sbrk> - 800ee48: 1c43 adds r3, r0, #1 - 800ee4a: d103 bne.n 800ee54 <_sbrk_r+0x1c> - 800ee4c: 682b ldr r3, [r5, #0] - 800ee4e: 2b00 cmp r3, #0 - 800ee50: d000 beq.n 800ee54 <_sbrk_r+0x1c> - 800ee52: 6023 str r3, [r4, #0] - 800ee54: bd70 pop {r4, r5, r6, pc} - 800ee56: 46c0 nop ; (mov r8, r8) - 800ee58: 20002a3c .word 0x20002a3c - -0800ee5c : - 800ee5c: b40c push {r2, r3} - 800ee5e: b530 push {r4, r5, lr} - 800ee60: 4b17 ldr r3, [pc, #92] ; (800eec0 ) - 800ee62: 000c movs r4, r1 - 800ee64: 681d ldr r5, [r3, #0] - 800ee66: b09d sub sp, #116 ; 0x74 - 800ee68: 2900 cmp r1, #0 - 800ee6a: da08 bge.n 800ee7e - 800ee6c: 238b movs r3, #139 ; 0x8b - 800ee6e: 2001 movs r0, #1 - 800ee70: 602b str r3, [r5, #0] - 800ee72: 4240 negs r0, r0 - 800ee74: b01d add sp, #116 ; 0x74 - 800ee76: bc30 pop {r4, r5} - 800ee78: bc08 pop {r3} - 800ee7a: b002 add sp, #8 - 800ee7c: 4718 bx r3 - 800ee7e: 2382 movs r3, #130 ; 0x82 - 800ee80: 466a mov r2, sp - 800ee82: 009b lsls r3, r3, #2 - 800ee84: 8293 strh r3, [r2, #20] - 800ee86: 2300 movs r3, #0 - 800ee88: 9002 str r0, [sp, #8] - 800ee8a: 9006 str r0, [sp, #24] - 800ee8c: 4299 cmp r1, r3 - 800ee8e: d000 beq.n 800ee92 - 800ee90: 1e4b subs r3, r1, #1 - 800ee92: 9304 str r3, [sp, #16] - 800ee94: 9307 str r3, [sp, #28] - 800ee96: 2301 movs r3, #1 - 800ee98: 466a mov r2, sp - 800ee9a: 425b negs r3, r3 - 800ee9c: 82d3 strh r3, [r2, #22] - 800ee9e: 0028 movs r0, r5 - 800eea0: ab21 add r3, sp, #132 ; 0x84 - 800eea2: 9a20 ldr r2, [sp, #128] ; 0x80 - 800eea4: a902 add r1, sp, #8 - 800eea6: 9301 str r3, [sp, #4] - 800eea8: f000 f8c8 bl 800f03c <_svfiprintf_r> - 800eeac: 1c43 adds r3, r0, #1 - 800eeae: da01 bge.n 800eeb4 - 800eeb0: 238b movs r3, #139 ; 0x8b - 800eeb2: 602b str r3, [r5, #0] - 800eeb4: 2c00 cmp r4, #0 - 800eeb6: d0dd beq.n 800ee74 - 800eeb8: 2300 movs r3, #0 - 800eeba: 9a02 ldr r2, [sp, #8] - 800eebc: 7013 strb r3, [r2, #0] - 800eebe: e7d9 b.n 800ee74 - 800eec0: 20000050 .word 0x20000050 - -0800eec4 <__malloc_lock>: - 800eec4: b510 push {r4, lr} - 800eec6: 4802 ldr r0, [pc, #8] ; (800eed0 <__malloc_lock+0xc>) - 800eec8: f7ff fe96 bl 800ebf8 <__retarget_lock_acquire_recursive> - 800eecc: bd10 pop {r4, pc} - 800eece: 46c0 nop ; (mov r8, r8) - 800eed0: 20002a30 .word 0x20002a30 - -0800eed4 <__malloc_unlock>: - 800eed4: b510 push {r4, lr} - 800eed6: 4802 ldr r0, [pc, #8] ; (800eee0 <__malloc_unlock+0xc>) - 800eed8: f7ff fe8f bl 800ebfa <__retarget_lock_release_recursive> - 800eedc: bd10 pop {r4, pc} - 800eede: 46c0 nop ; (mov r8, r8) - 800eee0: 20002a30 .word 0x20002a30 - -0800eee4 <_free_r>: - 800eee4: b570 push {r4, r5, r6, lr} - 800eee6: 0005 movs r5, r0 - 800eee8: 2900 cmp r1, #0 - 800eeea: d010 beq.n 800ef0e <_free_r+0x2a> - 800eeec: 1f0c subs r4, r1, #4 - 800eeee: 6823 ldr r3, [r4, #0] - 800eef0: 2b00 cmp r3, #0 - 800eef2: da00 bge.n 800eef6 <_free_r+0x12> - 800eef4: 18e4 adds r4, r4, r3 - 800eef6: 0028 movs r0, r5 - 800eef8: f7ff ffe4 bl 800eec4 <__malloc_lock> - 800eefc: 4a1d ldr r2, [pc, #116] ; (800ef74 <_free_r+0x90>) - 800eefe: 6813 ldr r3, [r2, #0] - 800ef00: 2b00 cmp r3, #0 - 800ef02: d105 bne.n 800ef10 <_free_r+0x2c> - 800ef04: 6063 str r3, [r4, #4] - 800ef06: 6014 str r4, [r2, #0] - 800ef08: 0028 movs r0, r5 - 800ef0a: f7ff ffe3 bl 800eed4 <__malloc_unlock> - 800ef0e: bd70 pop {r4, r5, r6, pc} - 800ef10: 42a3 cmp r3, r4 - 800ef12: d908 bls.n 800ef26 <_free_r+0x42> - 800ef14: 6821 ldr r1, [r4, #0] - 800ef16: 1860 adds r0, r4, r1 - 800ef18: 4283 cmp r3, r0 - 800ef1a: d1f3 bne.n 800ef04 <_free_r+0x20> - 800ef1c: 6818 ldr r0, [r3, #0] - 800ef1e: 685b ldr r3, [r3, #4] - 800ef20: 1841 adds r1, r0, r1 - 800ef22: 6021 str r1, [r4, #0] - 800ef24: e7ee b.n 800ef04 <_free_r+0x20> - 800ef26: 001a movs r2, r3 - 800ef28: 685b ldr r3, [r3, #4] - 800ef2a: 2b00 cmp r3, #0 - 800ef2c: d001 beq.n 800ef32 <_free_r+0x4e> - 800ef2e: 42a3 cmp r3, r4 - 800ef30: d9f9 bls.n 800ef26 <_free_r+0x42> - 800ef32: 6811 ldr r1, [r2, #0] - 800ef34: 1850 adds r0, r2, r1 - 800ef36: 42a0 cmp r0, r4 - 800ef38: d10b bne.n 800ef52 <_free_r+0x6e> - 800ef3a: 6820 ldr r0, [r4, #0] - 800ef3c: 1809 adds r1, r1, r0 - 800ef3e: 1850 adds r0, r2, r1 - 800ef40: 6011 str r1, [r2, #0] - 800ef42: 4283 cmp r3, r0 - 800ef44: d1e0 bne.n 800ef08 <_free_r+0x24> - 800ef46: 6818 ldr r0, [r3, #0] - 800ef48: 685b ldr r3, [r3, #4] - 800ef4a: 1841 adds r1, r0, r1 - 800ef4c: 6011 str r1, [r2, #0] - 800ef4e: 6053 str r3, [r2, #4] - 800ef50: e7da b.n 800ef08 <_free_r+0x24> - 800ef52: 42a0 cmp r0, r4 - 800ef54: d902 bls.n 800ef5c <_free_r+0x78> - 800ef56: 230c movs r3, #12 - 800ef58: 602b str r3, [r5, #0] - 800ef5a: e7d5 b.n 800ef08 <_free_r+0x24> - 800ef5c: 6821 ldr r1, [r4, #0] - 800ef5e: 1860 adds r0, r4, r1 - 800ef60: 4283 cmp r3, r0 - 800ef62: d103 bne.n 800ef6c <_free_r+0x88> - 800ef64: 6818 ldr r0, [r3, #0] - 800ef66: 685b ldr r3, [r3, #4] - 800ef68: 1841 adds r1, r0, r1 - 800ef6a: 6021 str r1, [r4, #0] - 800ef6c: 6063 str r3, [r4, #4] - 800ef6e: 6054 str r4, [r2, #4] - 800ef70: e7ca b.n 800ef08 <_free_r+0x24> - 800ef72: 46c0 nop ; (mov r8, r8) - 800ef74: 20002a34 .word 0x20002a34 - -0800ef78 <__ssputs_r>: - 800ef78: b5f0 push {r4, r5, r6, r7, lr} - 800ef7a: 688e ldr r6, [r1, #8] - 800ef7c: b085 sub sp, #20 - 800ef7e: 0007 movs r7, r0 - 800ef80: 000c movs r4, r1 - 800ef82: 9203 str r2, [sp, #12] - 800ef84: 9301 str r3, [sp, #4] - 800ef86: 429e cmp r6, r3 - 800ef88: d83c bhi.n 800f004 <__ssputs_r+0x8c> - 800ef8a: 2390 movs r3, #144 ; 0x90 - 800ef8c: 898a ldrh r2, [r1, #12] - 800ef8e: 00db lsls r3, r3, #3 - 800ef90: 421a tst r2, r3 - 800ef92: d034 beq.n 800effe <__ssputs_r+0x86> - 800ef94: 6909 ldr r1, [r1, #16] - 800ef96: 6823 ldr r3, [r4, #0] - 800ef98: 6960 ldr r0, [r4, #20] - 800ef9a: 1a5b subs r3, r3, r1 - 800ef9c: 9302 str r3, [sp, #8] - 800ef9e: 2303 movs r3, #3 - 800efa0: 4343 muls r3, r0 - 800efa2: 0fdd lsrs r5, r3, #31 - 800efa4: 18ed adds r5, r5, r3 - 800efa6: 9b01 ldr r3, [sp, #4] - 800efa8: 9802 ldr r0, [sp, #8] - 800efaa: 3301 adds r3, #1 - 800efac: 181b adds r3, r3, r0 - 800efae: 106d asrs r5, r5, #1 - 800efb0: 42ab cmp r3, r5 - 800efb2: d900 bls.n 800efb6 <__ssputs_r+0x3e> - 800efb4: 001d movs r5, r3 - 800efb6: 0553 lsls r3, r2, #21 - 800efb8: d532 bpl.n 800f020 <__ssputs_r+0xa8> - 800efba: 0029 movs r1, r5 - 800efbc: 0038 movs r0, r7 - 800efbe: f7ff fe51 bl 800ec64 <_malloc_r> - 800efc2: 1e06 subs r6, r0, #0 - 800efc4: d109 bne.n 800efda <__ssputs_r+0x62> - 800efc6: 230c movs r3, #12 - 800efc8: 603b str r3, [r7, #0] - 800efca: 2340 movs r3, #64 ; 0x40 - 800efcc: 2001 movs r0, #1 - 800efce: 89a2 ldrh r2, [r4, #12] - 800efd0: 4240 negs r0, r0 - 800efd2: 4313 orrs r3, r2 - 800efd4: 81a3 strh r3, [r4, #12] - 800efd6: b005 add sp, #20 - 800efd8: bdf0 pop {r4, r5, r6, r7, pc} - 800efda: 9a02 ldr r2, [sp, #8] - 800efdc: 6921 ldr r1, [r4, #16] - 800efde: f7ff fe0d bl 800ebfc - 800efe2: 89a3 ldrh r3, [r4, #12] - 800efe4: 4a14 ldr r2, [pc, #80] ; (800f038 <__ssputs_r+0xc0>) - 800efe6: 401a ands r2, r3 - 800efe8: 2380 movs r3, #128 ; 0x80 - 800efea: 4313 orrs r3, r2 - 800efec: 81a3 strh r3, [r4, #12] - 800efee: 9b02 ldr r3, [sp, #8] - 800eff0: 6126 str r6, [r4, #16] - 800eff2: 18f6 adds r6, r6, r3 - 800eff4: 6026 str r6, [r4, #0] - 800eff6: 6165 str r5, [r4, #20] - 800eff8: 9e01 ldr r6, [sp, #4] - 800effa: 1aed subs r5, r5, r3 - 800effc: 60a5 str r5, [r4, #8] - 800effe: 9b01 ldr r3, [sp, #4] - 800f000: 429e cmp r6, r3 - 800f002: d900 bls.n 800f006 <__ssputs_r+0x8e> - 800f004: 9e01 ldr r6, [sp, #4] - 800f006: 0032 movs r2, r6 - 800f008: 9903 ldr r1, [sp, #12] - 800f00a: 6820 ldr r0, [r4, #0] - 800f00c: f000 faa3 bl 800f556 - 800f010: 68a3 ldr r3, [r4, #8] - 800f012: 2000 movs r0, #0 - 800f014: 1b9b subs r3, r3, r6 - 800f016: 60a3 str r3, [r4, #8] - 800f018: 6823 ldr r3, [r4, #0] - 800f01a: 199e adds r6, r3, r6 - 800f01c: 6026 str r6, [r4, #0] - 800f01e: e7da b.n 800efd6 <__ssputs_r+0x5e> - 800f020: 002a movs r2, r5 - 800f022: 0038 movs r0, r7 - 800f024: f000 faaa bl 800f57c <_realloc_r> - 800f028: 1e06 subs r6, r0, #0 - 800f02a: d1e0 bne.n 800efee <__ssputs_r+0x76> - 800f02c: 0038 movs r0, r7 - 800f02e: 6921 ldr r1, [r4, #16] - 800f030: f7ff ff58 bl 800eee4 <_free_r> - 800f034: e7c7 b.n 800efc6 <__ssputs_r+0x4e> - 800f036: 46c0 nop ; (mov r8, r8) - 800f038: fffffb7f .word 0xfffffb7f - -0800f03c <_svfiprintf_r>: - 800f03c: b5f0 push {r4, r5, r6, r7, lr} - 800f03e: b0a1 sub sp, #132 ; 0x84 - 800f040: 9003 str r0, [sp, #12] - 800f042: 001d movs r5, r3 - 800f044: 898b ldrh r3, [r1, #12] - 800f046: 000f movs r7, r1 - 800f048: 0016 movs r6, r2 - 800f04a: 061b lsls r3, r3, #24 - 800f04c: d511 bpl.n 800f072 <_svfiprintf_r+0x36> - 800f04e: 690b ldr r3, [r1, #16] - 800f050: 2b00 cmp r3, #0 - 800f052: d10e bne.n 800f072 <_svfiprintf_r+0x36> - 800f054: 2140 movs r1, #64 ; 0x40 - 800f056: f7ff fe05 bl 800ec64 <_malloc_r> - 800f05a: 6038 str r0, [r7, #0] - 800f05c: 6138 str r0, [r7, #16] - 800f05e: 2800 cmp r0, #0 - 800f060: d105 bne.n 800f06e <_svfiprintf_r+0x32> - 800f062: 230c movs r3, #12 - 800f064: 9a03 ldr r2, [sp, #12] - 800f066: 3801 subs r0, #1 - 800f068: 6013 str r3, [r2, #0] - 800f06a: b021 add sp, #132 ; 0x84 - 800f06c: bdf0 pop {r4, r5, r6, r7, pc} - 800f06e: 2340 movs r3, #64 ; 0x40 - 800f070: 617b str r3, [r7, #20] - 800f072: 2300 movs r3, #0 - 800f074: ac08 add r4, sp, #32 - 800f076: 6163 str r3, [r4, #20] - 800f078: 3320 adds r3, #32 - 800f07a: 7663 strb r3, [r4, #25] - 800f07c: 3310 adds r3, #16 - 800f07e: 76a3 strb r3, [r4, #26] - 800f080: 9507 str r5, [sp, #28] - 800f082: 0035 movs r5, r6 - 800f084: 782b ldrb r3, [r5, #0] - 800f086: 2b00 cmp r3, #0 - 800f088: d001 beq.n 800f08e <_svfiprintf_r+0x52> - 800f08a: 2b25 cmp r3, #37 ; 0x25 - 800f08c: d147 bne.n 800f11e <_svfiprintf_r+0xe2> - 800f08e: 1bab subs r3, r5, r6 - 800f090: 9305 str r3, [sp, #20] - 800f092: 42b5 cmp r5, r6 - 800f094: d00c beq.n 800f0b0 <_svfiprintf_r+0x74> - 800f096: 0032 movs r2, r6 - 800f098: 0039 movs r1, r7 - 800f09a: 9803 ldr r0, [sp, #12] - 800f09c: f7ff ff6c bl 800ef78 <__ssputs_r> - 800f0a0: 1c43 adds r3, r0, #1 - 800f0a2: d100 bne.n 800f0a6 <_svfiprintf_r+0x6a> - 800f0a4: e0ae b.n 800f204 <_svfiprintf_r+0x1c8> - 800f0a6: 6962 ldr r2, [r4, #20] - 800f0a8: 9b05 ldr r3, [sp, #20] - 800f0aa: 4694 mov ip, r2 - 800f0ac: 4463 add r3, ip - 800f0ae: 6163 str r3, [r4, #20] - 800f0b0: 782b ldrb r3, [r5, #0] - 800f0b2: 2b00 cmp r3, #0 - 800f0b4: d100 bne.n 800f0b8 <_svfiprintf_r+0x7c> - 800f0b6: e0a5 b.n 800f204 <_svfiprintf_r+0x1c8> - 800f0b8: 2201 movs r2, #1 - 800f0ba: 2300 movs r3, #0 - 800f0bc: 4252 negs r2, r2 - 800f0be: 6062 str r2, [r4, #4] - 800f0c0: a904 add r1, sp, #16 - 800f0c2: 3254 adds r2, #84 ; 0x54 - 800f0c4: 1852 adds r2, r2, r1 - 800f0c6: 1c6e adds r6, r5, #1 - 800f0c8: 6023 str r3, [r4, #0] - 800f0ca: 60e3 str r3, [r4, #12] - 800f0cc: 60a3 str r3, [r4, #8] - 800f0ce: 7013 strb r3, [r2, #0] - 800f0d0: 65a3 str r3, [r4, #88] ; 0x58 - 800f0d2: 2205 movs r2, #5 - 800f0d4: 7831 ldrb r1, [r6, #0] - 800f0d6: 4854 ldr r0, [pc, #336] ; (800f228 <_svfiprintf_r+0x1ec>) - 800f0d8: f000 fa32 bl 800f540 - 800f0dc: 1c75 adds r5, r6, #1 - 800f0de: 2800 cmp r0, #0 - 800f0e0: d11f bne.n 800f122 <_svfiprintf_r+0xe6> - 800f0e2: 6822 ldr r2, [r4, #0] - 800f0e4: 06d3 lsls r3, r2, #27 - 800f0e6: d504 bpl.n 800f0f2 <_svfiprintf_r+0xb6> - 800f0e8: 2353 movs r3, #83 ; 0x53 - 800f0ea: a904 add r1, sp, #16 - 800f0ec: 185b adds r3, r3, r1 - 800f0ee: 2120 movs r1, #32 - 800f0f0: 7019 strb r1, [r3, #0] - 800f0f2: 0713 lsls r3, r2, #28 - 800f0f4: d504 bpl.n 800f100 <_svfiprintf_r+0xc4> - 800f0f6: 2353 movs r3, #83 ; 0x53 - 800f0f8: a904 add r1, sp, #16 - 800f0fa: 185b adds r3, r3, r1 - 800f0fc: 212b movs r1, #43 ; 0x2b - 800f0fe: 7019 strb r1, [r3, #0] - 800f100: 7833 ldrb r3, [r6, #0] - 800f102: 2b2a cmp r3, #42 ; 0x2a - 800f104: d016 beq.n 800f134 <_svfiprintf_r+0xf8> - 800f106: 0035 movs r5, r6 - 800f108: 2100 movs r1, #0 - 800f10a: 200a movs r0, #10 - 800f10c: 68e3 ldr r3, [r4, #12] - 800f10e: 782a ldrb r2, [r5, #0] - 800f110: 1c6e adds r6, r5, #1 - 800f112: 3a30 subs r2, #48 ; 0x30 - 800f114: 2a09 cmp r2, #9 - 800f116: d94e bls.n 800f1b6 <_svfiprintf_r+0x17a> - 800f118: 2900 cmp r1, #0 - 800f11a: d111 bne.n 800f140 <_svfiprintf_r+0x104> - 800f11c: e017 b.n 800f14e <_svfiprintf_r+0x112> - 800f11e: 3501 adds r5, #1 - 800f120: e7b0 b.n 800f084 <_svfiprintf_r+0x48> - 800f122: 4b41 ldr r3, [pc, #260] ; (800f228 <_svfiprintf_r+0x1ec>) - 800f124: 6822 ldr r2, [r4, #0] - 800f126: 1ac0 subs r0, r0, r3 - 800f128: 2301 movs r3, #1 - 800f12a: 4083 lsls r3, r0 - 800f12c: 4313 orrs r3, r2 - 800f12e: 002e movs r6, r5 - 800f130: 6023 str r3, [r4, #0] - 800f132: e7ce b.n 800f0d2 <_svfiprintf_r+0x96> - 800f134: 9b07 ldr r3, [sp, #28] - 800f136: 1d19 adds r1, r3, #4 - 800f138: 681b ldr r3, [r3, #0] - 800f13a: 9107 str r1, [sp, #28] - 800f13c: 2b00 cmp r3, #0 - 800f13e: db01 blt.n 800f144 <_svfiprintf_r+0x108> - 800f140: 930b str r3, [sp, #44] ; 0x2c - 800f142: e004 b.n 800f14e <_svfiprintf_r+0x112> - 800f144: 425b negs r3, r3 - 800f146: 60e3 str r3, [r4, #12] - 800f148: 2302 movs r3, #2 - 800f14a: 4313 orrs r3, r2 - 800f14c: 6023 str r3, [r4, #0] - 800f14e: 782b ldrb r3, [r5, #0] - 800f150: 2b2e cmp r3, #46 ; 0x2e - 800f152: d10a bne.n 800f16a <_svfiprintf_r+0x12e> - 800f154: 786b ldrb r3, [r5, #1] - 800f156: 2b2a cmp r3, #42 ; 0x2a - 800f158: d135 bne.n 800f1c6 <_svfiprintf_r+0x18a> - 800f15a: 9b07 ldr r3, [sp, #28] - 800f15c: 3502 adds r5, #2 - 800f15e: 1d1a adds r2, r3, #4 - 800f160: 681b ldr r3, [r3, #0] - 800f162: 9207 str r2, [sp, #28] - 800f164: 2b00 cmp r3, #0 - 800f166: db2b blt.n 800f1c0 <_svfiprintf_r+0x184> - 800f168: 9309 str r3, [sp, #36] ; 0x24 - 800f16a: 4e30 ldr r6, [pc, #192] ; (800f22c <_svfiprintf_r+0x1f0>) - 800f16c: 2203 movs r2, #3 - 800f16e: 0030 movs r0, r6 - 800f170: 7829 ldrb r1, [r5, #0] - 800f172: f000 f9e5 bl 800f540 - 800f176: 2800 cmp r0, #0 - 800f178: d006 beq.n 800f188 <_svfiprintf_r+0x14c> - 800f17a: 2340 movs r3, #64 ; 0x40 - 800f17c: 1b80 subs r0, r0, r6 - 800f17e: 4083 lsls r3, r0 - 800f180: 6822 ldr r2, [r4, #0] - 800f182: 3501 adds r5, #1 - 800f184: 4313 orrs r3, r2 - 800f186: 6023 str r3, [r4, #0] - 800f188: 7829 ldrb r1, [r5, #0] - 800f18a: 2206 movs r2, #6 - 800f18c: 4828 ldr r0, [pc, #160] ; (800f230 <_svfiprintf_r+0x1f4>) - 800f18e: 1c6e adds r6, r5, #1 - 800f190: 7621 strb r1, [r4, #24] - 800f192: f000 f9d5 bl 800f540 - 800f196: 2800 cmp r0, #0 - 800f198: d03c beq.n 800f214 <_svfiprintf_r+0x1d8> - 800f19a: 4b26 ldr r3, [pc, #152] ; (800f234 <_svfiprintf_r+0x1f8>) - 800f19c: 2b00 cmp r3, #0 - 800f19e: d125 bne.n 800f1ec <_svfiprintf_r+0x1b0> - 800f1a0: 2207 movs r2, #7 - 800f1a2: 9b07 ldr r3, [sp, #28] - 800f1a4: 3307 adds r3, #7 - 800f1a6: 4393 bics r3, r2 - 800f1a8: 3308 adds r3, #8 - 800f1aa: 9307 str r3, [sp, #28] - 800f1ac: 6963 ldr r3, [r4, #20] - 800f1ae: 9a04 ldr r2, [sp, #16] - 800f1b0: 189b adds r3, r3, r2 - 800f1b2: 6163 str r3, [r4, #20] - 800f1b4: e765 b.n 800f082 <_svfiprintf_r+0x46> - 800f1b6: 4343 muls r3, r0 - 800f1b8: 0035 movs r5, r6 - 800f1ba: 2101 movs r1, #1 - 800f1bc: 189b adds r3, r3, r2 - 800f1be: e7a6 b.n 800f10e <_svfiprintf_r+0xd2> - 800f1c0: 2301 movs r3, #1 - 800f1c2: 425b negs r3, r3 - 800f1c4: e7d0 b.n 800f168 <_svfiprintf_r+0x12c> - 800f1c6: 2300 movs r3, #0 - 800f1c8: 200a movs r0, #10 - 800f1ca: 001a movs r2, r3 - 800f1cc: 3501 adds r5, #1 - 800f1ce: 6063 str r3, [r4, #4] - 800f1d0: 7829 ldrb r1, [r5, #0] - 800f1d2: 1c6e adds r6, r5, #1 - 800f1d4: 3930 subs r1, #48 ; 0x30 - 800f1d6: 2909 cmp r1, #9 - 800f1d8: d903 bls.n 800f1e2 <_svfiprintf_r+0x1a6> - 800f1da: 2b00 cmp r3, #0 - 800f1dc: d0c5 beq.n 800f16a <_svfiprintf_r+0x12e> - 800f1de: 9209 str r2, [sp, #36] ; 0x24 - 800f1e0: e7c3 b.n 800f16a <_svfiprintf_r+0x12e> - 800f1e2: 4342 muls r2, r0 - 800f1e4: 0035 movs r5, r6 - 800f1e6: 2301 movs r3, #1 - 800f1e8: 1852 adds r2, r2, r1 - 800f1ea: e7f1 b.n 800f1d0 <_svfiprintf_r+0x194> - 800f1ec: ab07 add r3, sp, #28 - 800f1ee: 9300 str r3, [sp, #0] - 800f1f0: 003a movs r2, r7 - 800f1f2: 0021 movs r1, r4 - 800f1f4: 4b10 ldr r3, [pc, #64] ; (800f238 <_svfiprintf_r+0x1fc>) - 800f1f6: 9803 ldr r0, [sp, #12] - 800f1f8: e000 b.n 800f1fc <_svfiprintf_r+0x1c0> - 800f1fa: bf00 nop - 800f1fc: 9004 str r0, [sp, #16] - 800f1fe: 9b04 ldr r3, [sp, #16] - 800f200: 3301 adds r3, #1 - 800f202: d1d3 bne.n 800f1ac <_svfiprintf_r+0x170> - 800f204: 89bb ldrh r3, [r7, #12] - 800f206: 980d ldr r0, [sp, #52] ; 0x34 - 800f208: 065b lsls r3, r3, #25 - 800f20a: d400 bmi.n 800f20e <_svfiprintf_r+0x1d2> - 800f20c: e72d b.n 800f06a <_svfiprintf_r+0x2e> - 800f20e: 2001 movs r0, #1 - 800f210: 4240 negs r0, r0 - 800f212: e72a b.n 800f06a <_svfiprintf_r+0x2e> - 800f214: ab07 add r3, sp, #28 - 800f216: 9300 str r3, [sp, #0] - 800f218: 003a movs r2, r7 - 800f21a: 0021 movs r1, r4 - 800f21c: 4b06 ldr r3, [pc, #24] ; (800f238 <_svfiprintf_r+0x1fc>) - 800f21e: 9803 ldr r0, [sp, #12] - 800f220: f000 f87c bl 800f31c <_printf_i> - 800f224: e7ea b.n 800f1fc <_svfiprintf_r+0x1c0> - 800f226: 46c0 nop ; (mov r8, r8) - 800f228: 08010fe4 .word 0x08010fe4 - 800f22c: 08010fea .word 0x08010fea - 800f230: 08010fee .word 0x08010fee - 800f234: 00000000 .word 0x00000000 - 800f238: 0800ef79 .word 0x0800ef79 - -0800f23c <_printf_common>: - 800f23c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 800f23e: 0015 movs r5, r2 - 800f240: 9301 str r3, [sp, #4] - 800f242: 688a ldr r2, [r1, #8] - 800f244: 690b ldr r3, [r1, #16] - 800f246: 000c movs r4, r1 - 800f248: 9000 str r0, [sp, #0] - 800f24a: 4293 cmp r3, r2 - 800f24c: da00 bge.n 800f250 <_printf_common+0x14> - 800f24e: 0013 movs r3, r2 - 800f250: 0022 movs r2, r4 - 800f252: 602b str r3, [r5, #0] - 800f254: 3243 adds r2, #67 ; 0x43 - 800f256: 7812 ldrb r2, [r2, #0] - 800f258: 2a00 cmp r2, #0 - 800f25a: d001 beq.n 800f260 <_printf_common+0x24> - 800f25c: 3301 adds r3, #1 - 800f25e: 602b str r3, [r5, #0] - 800f260: 6823 ldr r3, [r4, #0] - 800f262: 069b lsls r3, r3, #26 - 800f264: d502 bpl.n 800f26c <_printf_common+0x30> - 800f266: 682b ldr r3, [r5, #0] - 800f268: 3302 adds r3, #2 - 800f26a: 602b str r3, [r5, #0] - 800f26c: 6822 ldr r2, [r4, #0] - 800f26e: 2306 movs r3, #6 - 800f270: 0017 movs r7, r2 - 800f272: 401f ands r7, r3 - 800f274: 421a tst r2, r3 - 800f276: d027 beq.n 800f2c8 <_printf_common+0x8c> - 800f278: 0023 movs r3, r4 - 800f27a: 3343 adds r3, #67 ; 0x43 - 800f27c: 781b ldrb r3, [r3, #0] - 800f27e: 1e5a subs r2, r3, #1 - 800f280: 4193 sbcs r3, r2 - 800f282: 6822 ldr r2, [r4, #0] - 800f284: 0692 lsls r2, r2, #26 - 800f286: d430 bmi.n 800f2ea <_printf_common+0xae> - 800f288: 0022 movs r2, r4 - 800f28a: 9901 ldr r1, [sp, #4] - 800f28c: 9800 ldr r0, [sp, #0] - 800f28e: 9e08 ldr r6, [sp, #32] - 800f290: 3243 adds r2, #67 ; 0x43 - 800f292: 47b0 blx r6 - 800f294: 1c43 adds r3, r0, #1 - 800f296: d025 beq.n 800f2e4 <_printf_common+0xa8> - 800f298: 2306 movs r3, #6 - 800f29a: 6820 ldr r0, [r4, #0] - 800f29c: 682a ldr r2, [r5, #0] - 800f29e: 68e1 ldr r1, [r4, #12] - 800f2a0: 2500 movs r5, #0 - 800f2a2: 4003 ands r3, r0 - 800f2a4: 2b04 cmp r3, #4 - 800f2a6: d103 bne.n 800f2b0 <_printf_common+0x74> - 800f2a8: 1a8d subs r5, r1, r2 - 800f2aa: 43eb mvns r3, r5 - 800f2ac: 17db asrs r3, r3, #31 - 800f2ae: 401d ands r5, r3 - 800f2b0: 68a3 ldr r3, [r4, #8] - 800f2b2: 6922 ldr r2, [r4, #16] - 800f2b4: 4293 cmp r3, r2 - 800f2b6: dd01 ble.n 800f2bc <_printf_common+0x80> - 800f2b8: 1a9b subs r3, r3, r2 - 800f2ba: 18ed adds r5, r5, r3 - 800f2bc: 2700 movs r7, #0 - 800f2be: 42bd cmp r5, r7 - 800f2c0: d120 bne.n 800f304 <_printf_common+0xc8> - 800f2c2: 2000 movs r0, #0 - 800f2c4: e010 b.n 800f2e8 <_printf_common+0xac> - 800f2c6: 3701 adds r7, #1 - 800f2c8: 68e3 ldr r3, [r4, #12] - 800f2ca: 682a ldr r2, [r5, #0] - 800f2cc: 1a9b subs r3, r3, r2 - 800f2ce: 42bb cmp r3, r7 - 800f2d0: ddd2 ble.n 800f278 <_printf_common+0x3c> - 800f2d2: 0022 movs r2, r4 - 800f2d4: 2301 movs r3, #1 - 800f2d6: 9901 ldr r1, [sp, #4] - 800f2d8: 9800 ldr r0, [sp, #0] - 800f2da: 9e08 ldr r6, [sp, #32] - 800f2dc: 3219 adds r2, #25 - 800f2de: 47b0 blx r6 - 800f2e0: 1c43 adds r3, r0, #1 - 800f2e2: d1f0 bne.n 800f2c6 <_printf_common+0x8a> - 800f2e4: 2001 movs r0, #1 - 800f2e6: 4240 negs r0, r0 - 800f2e8: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} - 800f2ea: 2030 movs r0, #48 ; 0x30 - 800f2ec: 18e1 adds r1, r4, r3 - 800f2ee: 3143 adds r1, #67 ; 0x43 - 800f2f0: 7008 strb r0, [r1, #0] - 800f2f2: 0021 movs r1, r4 - 800f2f4: 1c5a adds r2, r3, #1 - 800f2f6: 3145 adds r1, #69 ; 0x45 - 800f2f8: 7809 ldrb r1, [r1, #0] - 800f2fa: 18a2 adds r2, r4, r2 - 800f2fc: 3243 adds r2, #67 ; 0x43 - 800f2fe: 3302 adds r3, #2 - 800f300: 7011 strb r1, [r2, #0] - 800f302: e7c1 b.n 800f288 <_printf_common+0x4c> - 800f304: 0022 movs r2, r4 - 800f306: 2301 movs r3, #1 - 800f308: 9901 ldr r1, [sp, #4] - 800f30a: 9800 ldr r0, [sp, #0] - 800f30c: 9e08 ldr r6, [sp, #32] - 800f30e: 321a adds r2, #26 - 800f310: 47b0 blx r6 - 800f312: 1c43 adds r3, r0, #1 - 800f314: d0e6 beq.n 800f2e4 <_printf_common+0xa8> - 800f316: 3701 adds r7, #1 - 800f318: e7d1 b.n 800f2be <_printf_common+0x82> - ... - -0800f31c <_printf_i>: - 800f31c: b5f0 push {r4, r5, r6, r7, lr} - 800f31e: b08b sub sp, #44 ; 0x2c - 800f320: 9206 str r2, [sp, #24] - 800f322: 000a movs r2, r1 - 800f324: 3243 adds r2, #67 ; 0x43 - 800f326: 9307 str r3, [sp, #28] - 800f328: 9005 str r0, [sp, #20] - 800f32a: 9204 str r2, [sp, #16] - 800f32c: 7e0a ldrb r2, [r1, #24] - 800f32e: 000c movs r4, r1 - 800f330: 9b10 ldr r3, [sp, #64] ; 0x40 - 800f332: 2a78 cmp r2, #120 ; 0x78 - 800f334: d807 bhi.n 800f346 <_printf_i+0x2a> - 800f336: 2a62 cmp r2, #98 ; 0x62 - 800f338: d809 bhi.n 800f34e <_printf_i+0x32> - 800f33a: 2a00 cmp r2, #0 - 800f33c: d100 bne.n 800f340 <_printf_i+0x24> - 800f33e: e0c1 b.n 800f4c4 <_printf_i+0x1a8> - 800f340: 2a58 cmp r2, #88 ; 0x58 - 800f342: d100 bne.n 800f346 <_printf_i+0x2a> - 800f344: e08c b.n 800f460 <_printf_i+0x144> - 800f346: 0026 movs r6, r4 - 800f348: 3642 adds r6, #66 ; 0x42 - 800f34a: 7032 strb r2, [r6, #0] - 800f34c: e022 b.n 800f394 <_printf_i+0x78> - 800f34e: 0010 movs r0, r2 - 800f350: 3863 subs r0, #99 ; 0x63 - 800f352: 2815 cmp r0, #21 - 800f354: d8f7 bhi.n 800f346 <_printf_i+0x2a> - 800f356: f7f0 fedf bl 8000118 <__gnu_thumb1_case_shi> - 800f35a: 0016 .short 0x0016 - 800f35c: fff6001f .word 0xfff6001f - 800f360: fff6fff6 .word 0xfff6fff6 - 800f364: 001ffff6 .word 0x001ffff6 - 800f368: fff6fff6 .word 0xfff6fff6 - 800f36c: fff6fff6 .word 0xfff6fff6 - 800f370: 003600a8 .word 0x003600a8 - 800f374: fff6009a .word 0xfff6009a - 800f378: 00b9fff6 .word 0x00b9fff6 - 800f37c: 0036fff6 .word 0x0036fff6 - 800f380: fff6fff6 .word 0xfff6fff6 - 800f384: 009e .short 0x009e - 800f386: 0026 movs r6, r4 - 800f388: 681a ldr r2, [r3, #0] - 800f38a: 3642 adds r6, #66 ; 0x42 - 800f38c: 1d11 adds r1, r2, #4 - 800f38e: 6019 str r1, [r3, #0] - 800f390: 6813 ldr r3, [r2, #0] - 800f392: 7033 strb r3, [r6, #0] - 800f394: 2301 movs r3, #1 - 800f396: e0a7 b.n 800f4e8 <_printf_i+0x1cc> - 800f398: 6808 ldr r0, [r1, #0] - 800f39a: 6819 ldr r1, [r3, #0] - 800f39c: 1d0a adds r2, r1, #4 - 800f39e: 0605 lsls r5, r0, #24 - 800f3a0: d50b bpl.n 800f3ba <_printf_i+0x9e> - 800f3a2: 680d ldr r5, [r1, #0] - 800f3a4: 601a str r2, [r3, #0] - 800f3a6: 2d00 cmp r5, #0 - 800f3a8: da03 bge.n 800f3b2 <_printf_i+0x96> - 800f3aa: 232d movs r3, #45 ; 0x2d - 800f3ac: 9a04 ldr r2, [sp, #16] - 800f3ae: 426d negs r5, r5 - 800f3b0: 7013 strb r3, [r2, #0] - 800f3b2: 4b61 ldr r3, [pc, #388] ; (800f538 <_printf_i+0x21c>) - 800f3b4: 270a movs r7, #10 - 800f3b6: 9303 str r3, [sp, #12] - 800f3b8: e01b b.n 800f3f2 <_printf_i+0xd6> - 800f3ba: 680d ldr r5, [r1, #0] - 800f3bc: 601a str r2, [r3, #0] - 800f3be: 0641 lsls r1, r0, #25 - 800f3c0: d5f1 bpl.n 800f3a6 <_printf_i+0x8a> - 800f3c2: b22d sxth r5, r5 - 800f3c4: e7ef b.n 800f3a6 <_printf_i+0x8a> - 800f3c6: 680d ldr r5, [r1, #0] - 800f3c8: 6819 ldr r1, [r3, #0] - 800f3ca: 1d08 adds r0, r1, #4 - 800f3cc: 6018 str r0, [r3, #0] - 800f3ce: 062e lsls r6, r5, #24 - 800f3d0: d501 bpl.n 800f3d6 <_printf_i+0xba> - 800f3d2: 680d ldr r5, [r1, #0] - 800f3d4: e003 b.n 800f3de <_printf_i+0xc2> - 800f3d6: 066d lsls r5, r5, #25 - 800f3d8: d5fb bpl.n 800f3d2 <_printf_i+0xb6> - 800f3da: 680d ldr r5, [r1, #0] - 800f3dc: b2ad uxth r5, r5 - 800f3de: 4b56 ldr r3, [pc, #344] ; (800f538 <_printf_i+0x21c>) - 800f3e0: 2708 movs r7, #8 - 800f3e2: 9303 str r3, [sp, #12] - 800f3e4: 2a6f cmp r2, #111 ; 0x6f - 800f3e6: d000 beq.n 800f3ea <_printf_i+0xce> - 800f3e8: 3702 adds r7, #2 - 800f3ea: 0023 movs r3, r4 - 800f3ec: 2200 movs r2, #0 - 800f3ee: 3343 adds r3, #67 ; 0x43 - 800f3f0: 701a strb r2, [r3, #0] - 800f3f2: 6863 ldr r3, [r4, #4] - 800f3f4: 60a3 str r3, [r4, #8] - 800f3f6: 2b00 cmp r3, #0 - 800f3f8: db03 blt.n 800f402 <_printf_i+0xe6> - 800f3fa: 2204 movs r2, #4 - 800f3fc: 6821 ldr r1, [r4, #0] - 800f3fe: 4391 bics r1, r2 - 800f400: 6021 str r1, [r4, #0] - 800f402: 2d00 cmp r5, #0 - 800f404: d102 bne.n 800f40c <_printf_i+0xf0> - 800f406: 9e04 ldr r6, [sp, #16] - 800f408: 2b00 cmp r3, #0 - 800f40a: d00c beq.n 800f426 <_printf_i+0x10a> - 800f40c: 9e04 ldr r6, [sp, #16] - 800f40e: 0028 movs r0, r5 - 800f410: 0039 movs r1, r7 - 800f412: f7f0 ff11 bl 8000238 <__aeabi_uidivmod> - 800f416: 9b03 ldr r3, [sp, #12] - 800f418: 3e01 subs r6, #1 - 800f41a: 5c5b ldrb r3, [r3, r1] - 800f41c: 7033 strb r3, [r6, #0] - 800f41e: 002b movs r3, r5 - 800f420: 0005 movs r5, r0 - 800f422: 429f cmp r7, r3 - 800f424: d9f3 bls.n 800f40e <_printf_i+0xf2> - 800f426: 2f08 cmp r7, #8 - 800f428: d109 bne.n 800f43e <_printf_i+0x122> - 800f42a: 6823 ldr r3, [r4, #0] - 800f42c: 07db lsls r3, r3, #31 - 800f42e: d506 bpl.n 800f43e <_printf_i+0x122> - 800f430: 6863 ldr r3, [r4, #4] - 800f432: 6922 ldr r2, [r4, #16] - 800f434: 4293 cmp r3, r2 - 800f436: dc02 bgt.n 800f43e <_printf_i+0x122> - 800f438: 2330 movs r3, #48 ; 0x30 - 800f43a: 3e01 subs r6, #1 - 800f43c: 7033 strb r3, [r6, #0] - 800f43e: 9b04 ldr r3, [sp, #16] - 800f440: 1b9b subs r3, r3, r6 - 800f442: 6123 str r3, [r4, #16] - 800f444: 9b07 ldr r3, [sp, #28] - 800f446: 0021 movs r1, r4 - 800f448: 9300 str r3, [sp, #0] - 800f44a: 9805 ldr r0, [sp, #20] - 800f44c: 9b06 ldr r3, [sp, #24] - 800f44e: aa09 add r2, sp, #36 ; 0x24 - 800f450: f7ff fef4 bl 800f23c <_printf_common> - 800f454: 1c43 adds r3, r0, #1 - 800f456: d14c bne.n 800f4f2 <_printf_i+0x1d6> - 800f458: 2001 movs r0, #1 - 800f45a: 4240 negs r0, r0 - 800f45c: b00b add sp, #44 ; 0x2c - 800f45e: bdf0 pop {r4, r5, r6, r7, pc} - 800f460: 3145 adds r1, #69 ; 0x45 - 800f462: 700a strb r2, [r1, #0] - 800f464: 4a34 ldr r2, [pc, #208] ; (800f538 <_printf_i+0x21c>) - 800f466: 9203 str r2, [sp, #12] - 800f468: 681a ldr r2, [r3, #0] - 800f46a: 6821 ldr r1, [r4, #0] - 800f46c: ca20 ldmia r2!, {r5} - 800f46e: 601a str r2, [r3, #0] - 800f470: 0608 lsls r0, r1, #24 - 800f472: d516 bpl.n 800f4a2 <_printf_i+0x186> - 800f474: 07cb lsls r3, r1, #31 - 800f476: d502 bpl.n 800f47e <_printf_i+0x162> - 800f478: 2320 movs r3, #32 - 800f47a: 4319 orrs r1, r3 - 800f47c: 6021 str r1, [r4, #0] - 800f47e: 2710 movs r7, #16 - 800f480: 2d00 cmp r5, #0 - 800f482: d1b2 bne.n 800f3ea <_printf_i+0xce> - 800f484: 2320 movs r3, #32 - 800f486: 6822 ldr r2, [r4, #0] - 800f488: 439a bics r2, r3 - 800f48a: 6022 str r2, [r4, #0] - 800f48c: e7ad b.n 800f3ea <_printf_i+0xce> - 800f48e: 2220 movs r2, #32 - 800f490: 6809 ldr r1, [r1, #0] - 800f492: 430a orrs r2, r1 - 800f494: 6022 str r2, [r4, #0] - 800f496: 0022 movs r2, r4 - 800f498: 2178 movs r1, #120 ; 0x78 - 800f49a: 3245 adds r2, #69 ; 0x45 - 800f49c: 7011 strb r1, [r2, #0] - 800f49e: 4a27 ldr r2, [pc, #156] ; (800f53c <_printf_i+0x220>) - 800f4a0: e7e1 b.n 800f466 <_printf_i+0x14a> - 800f4a2: 0648 lsls r0, r1, #25 - 800f4a4: d5e6 bpl.n 800f474 <_printf_i+0x158> - 800f4a6: b2ad uxth r5, r5 - 800f4a8: e7e4 b.n 800f474 <_printf_i+0x158> - 800f4aa: 681a ldr r2, [r3, #0] - 800f4ac: 680d ldr r5, [r1, #0] - 800f4ae: 1d10 adds r0, r2, #4 - 800f4b0: 6949 ldr r1, [r1, #20] - 800f4b2: 6018 str r0, [r3, #0] - 800f4b4: 6813 ldr r3, [r2, #0] - 800f4b6: 062e lsls r6, r5, #24 - 800f4b8: d501 bpl.n 800f4be <_printf_i+0x1a2> - 800f4ba: 6019 str r1, [r3, #0] - 800f4bc: e002 b.n 800f4c4 <_printf_i+0x1a8> - 800f4be: 066d lsls r5, r5, #25 - 800f4c0: d5fb bpl.n 800f4ba <_printf_i+0x19e> - 800f4c2: 8019 strh r1, [r3, #0] - 800f4c4: 2300 movs r3, #0 - 800f4c6: 9e04 ldr r6, [sp, #16] - 800f4c8: 6123 str r3, [r4, #16] - 800f4ca: e7bb b.n 800f444 <_printf_i+0x128> - 800f4cc: 681a ldr r2, [r3, #0] - 800f4ce: 1d11 adds r1, r2, #4 - 800f4d0: 6019 str r1, [r3, #0] - 800f4d2: 6816 ldr r6, [r2, #0] - 800f4d4: 2100 movs r1, #0 - 800f4d6: 0030 movs r0, r6 - 800f4d8: 6862 ldr r2, [r4, #4] - 800f4da: f000 f831 bl 800f540 - 800f4de: 2800 cmp r0, #0 - 800f4e0: d001 beq.n 800f4e6 <_printf_i+0x1ca> - 800f4e2: 1b80 subs r0, r0, r6 - 800f4e4: 6060 str r0, [r4, #4] - 800f4e6: 6863 ldr r3, [r4, #4] - 800f4e8: 6123 str r3, [r4, #16] - 800f4ea: 2300 movs r3, #0 - 800f4ec: 9a04 ldr r2, [sp, #16] - 800f4ee: 7013 strb r3, [r2, #0] - 800f4f0: e7a8 b.n 800f444 <_printf_i+0x128> - 800f4f2: 6923 ldr r3, [r4, #16] - 800f4f4: 0032 movs r2, r6 - 800f4f6: 9906 ldr r1, [sp, #24] - 800f4f8: 9805 ldr r0, [sp, #20] - 800f4fa: 9d07 ldr r5, [sp, #28] - 800f4fc: 47a8 blx r5 - 800f4fe: 1c43 adds r3, r0, #1 - 800f500: d0aa beq.n 800f458 <_printf_i+0x13c> - 800f502: 6823 ldr r3, [r4, #0] - 800f504: 079b lsls r3, r3, #30 - 800f506: d415 bmi.n 800f534 <_printf_i+0x218> - 800f508: 9b09 ldr r3, [sp, #36] ; 0x24 - 800f50a: 68e0 ldr r0, [r4, #12] - 800f50c: 4298 cmp r0, r3 - 800f50e: daa5 bge.n 800f45c <_printf_i+0x140> - 800f510: 0018 movs r0, r3 - 800f512: e7a3 b.n 800f45c <_printf_i+0x140> - 800f514: 0022 movs r2, r4 - 800f516: 2301 movs r3, #1 - 800f518: 9906 ldr r1, [sp, #24] - 800f51a: 9805 ldr r0, [sp, #20] - 800f51c: 9e07 ldr r6, [sp, #28] - 800f51e: 3219 adds r2, #25 - 800f520: 47b0 blx r6 - 800f522: 1c43 adds r3, r0, #1 - 800f524: d098 beq.n 800f458 <_printf_i+0x13c> - 800f526: 3501 adds r5, #1 - 800f528: 68e3 ldr r3, [r4, #12] - 800f52a: 9a09 ldr r2, [sp, #36] ; 0x24 - 800f52c: 1a9b subs r3, r3, r2 - 800f52e: 42ab cmp r3, r5 - 800f530: dcf0 bgt.n 800f514 <_printf_i+0x1f8> - 800f532: e7e9 b.n 800f508 <_printf_i+0x1ec> - 800f534: 2500 movs r5, #0 - 800f536: e7f7 b.n 800f528 <_printf_i+0x20c> - 800f538: 08010ff5 .word 0x08010ff5 - 800f53c: 08011006 .word 0x08011006 - -0800f540 : - 800f540: b2c9 uxtb r1, r1 - 800f542: 1882 adds r2, r0, r2 - 800f544: 4290 cmp r0, r2 - 800f546: d101 bne.n 800f54c - 800f548: 2000 movs r0, #0 - 800f54a: 4770 bx lr - 800f54c: 7803 ldrb r3, [r0, #0] - 800f54e: 428b cmp r3, r1 - 800f550: d0fb beq.n 800f54a - 800f552: 3001 adds r0, #1 - 800f554: e7f6 b.n 800f544 - -0800f556 : - 800f556: b510 push {r4, lr} - 800f558: 4288 cmp r0, r1 - 800f55a: d902 bls.n 800f562 - 800f55c: 188b adds r3, r1, r2 - 800f55e: 4298 cmp r0, r3 - 800f560: d303 bcc.n 800f56a - 800f562: 2300 movs r3, #0 - 800f564: e007 b.n 800f576 - 800f566: 5c8b ldrb r3, [r1, r2] - 800f568: 5483 strb r3, [r0, r2] - 800f56a: 3a01 subs r2, #1 - 800f56c: d2fb bcs.n 800f566 - 800f56e: bd10 pop {r4, pc} - 800f570: 5ccc ldrb r4, [r1, r3] - 800f572: 54c4 strb r4, [r0, r3] - 800f574: 3301 adds r3, #1 - 800f576: 429a cmp r2, r3 - 800f578: d1fa bne.n 800f570 - 800f57a: e7f8 b.n 800f56e - -0800f57c <_realloc_r>: - 800f57c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 800f57e: 0007 movs r7, r0 - 800f580: 000e movs r6, r1 - 800f582: 0014 movs r4, r2 - 800f584: 2900 cmp r1, #0 - 800f586: d105 bne.n 800f594 <_realloc_r+0x18> - 800f588: 0011 movs r1, r2 - 800f58a: f7ff fb6b bl 800ec64 <_malloc_r> - 800f58e: 0005 movs r5, r0 - 800f590: 0028 movs r0, r5 - 800f592: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} - 800f594: 2a00 cmp r2, #0 - 800f596: d103 bne.n 800f5a0 <_realloc_r+0x24> - 800f598: f7ff fca4 bl 800eee4 <_free_r> - 800f59c: 0025 movs r5, r4 - 800f59e: e7f7 b.n 800f590 <_realloc_r+0x14> - 800f5a0: f000 f81b bl 800f5da <_malloc_usable_size_r> - 800f5a4: 9001 str r0, [sp, #4] - 800f5a6: 4284 cmp r4, r0 - 800f5a8: d803 bhi.n 800f5b2 <_realloc_r+0x36> - 800f5aa: 0035 movs r5, r6 - 800f5ac: 0843 lsrs r3, r0, #1 - 800f5ae: 42a3 cmp r3, r4 - 800f5b0: d3ee bcc.n 800f590 <_realloc_r+0x14> - 800f5b2: 0021 movs r1, r4 - 800f5b4: 0038 movs r0, r7 - 800f5b6: f7ff fb55 bl 800ec64 <_malloc_r> - 800f5ba: 1e05 subs r5, r0, #0 - 800f5bc: d0e8 beq.n 800f590 <_realloc_r+0x14> - 800f5be: 9b01 ldr r3, [sp, #4] - 800f5c0: 0022 movs r2, r4 - 800f5c2: 429c cmp r4, r3 - 800f5c4: d900 bls.n 800f5c8 <_realloc_r+0x4c> - 800f5c6: 001a movs r2, r3 - 800f5c8: 0031 movs r1, r6 - 800f5ca: 0028 movs r0, r5 - 800f5cc: f7ff fb16 bl 800ebfc - 800f5d0: 0031 movs r1, r6 - 800f5d2: 0038 movs r0, r7 - 800f5d4: f7ff fc86 bl 800eee4 <_free_r> - 800f5d8: e7da b.n 800f590 <_realloc_r+0x14> - -0800f5da <_malloc_usable_size_r>: - 800f5da: 1f0b subs r3, r1, #4 - 800f5dc: 681b ldr r3, [r3, #0] - 800f5de: 1f18 subs r0, r3, #4 - 800f5e0: 2b00 cmp r3, #0 - 800f5e2: da01 bge.n 800f5e8 <_malloc_usable_size_r+0xe> - 800f5e4: 580b ldr r3, [r1, r0] - 800f5e6: 18c0 adds r0, r0, r3 - 800f5e8: 4770 bx lr - ... - -0800f5ec <_init>: - 800f5ec: b5f8 push {r3, r4, r5, r6, r7, lr} - 800f5ee: 46c0 nop ; (mov r8, r8) - 800f5f0: bcf8 pop {r3, r4, r5, r6, r7} - 800f5f2: bc08 pop {r3} - 800f5f4: 469e mov lr, r3 - 800f5f6: 4770 bx lr - -0800f5f8 <_fini>: - 800f5f8: b5f8 push {r3, r4, r5, r6, r7, lr} - 800f5fa: 46c0 nop ; (mov r8, r8) - 800f5fc: bcf8 pop {r3, r4, r5, r6, r7} - 800f5fe: bc08 pop {r3} - 800f600: 469e mov lr, r3 - 800f602: 4770 bx lr diff --git a/firmware/PCB-Heater/Debug/makefile b/firmware/PCB-Heater/Debug/makefile deleted file mode 100644 index 32e8e37..0000000 --- a/firmware/PCB-Heater/Debug/makefile +++ /dev/null @@ -1,98 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - --include ../makefile.init - -RM := rm -rf - -# All of the sources participating in the build are defined here --include sources.mk --include Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/subdir.mk --include Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/subdir.mk --include Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/subdir.mk --include Middlewares/Third_Party/FreeRTOS/Source/subdir.mk --include Drivers/STM32G0xx_HAL_Driver/Src/subdir.mk --include Core/Startup/subdir.mk --include Core/Src/subdir.mk --include objects.mk - -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(strip $(S_DEPS)),) --include $(S_DEPS) -endif -ifneq ($(strip $(S_UPPER_DEPS)),) --include $(S_UPPER_DEPS) -endif -ifneq ($(strip $(C_DEPS)),) --include $(C_DEPS) -endif -endif - --include ../makefile.defs - -OPTIONAL_TOOL_DEPS := \ -$(wildcard ../makefile.defs) \ -$(wildcard ../makefile.init) \ -$(wildcard ../makefile.targets) \ - - -BUILD_ARTIFACT_NAME := PCB-Heater -BUILD_ARTIFACT_EXTENSION := elf -BUILD_ARTIFACT_PREFIX := -BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),) - -# Add inputs and outputs from these tool invocations to the build variables -EXECUTABLES += \ -PCB-Heater.elf \ - -MAP_FILES += \ -PCB-Heater.map \ - -SIZE_OUTPUT += \ -default.size.stdout \ - -OBJDUMP_LIST += \ -PCB-Heater.list \ - - -# All Target -all: main-build - -# Main-build Target -main-build: PCB-Heater.elf secondary-outputs - -# Tool invocations -PCB-Heater.elf PCB-Heater.map: $(OBJS) $(USER_OBJS) G:\YandexDisk\Projects\PCB-Heater\firmware\PCB-Heater\STM32G070RBTX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) - arm-none-eabi-gcc -o "PCB-Heater.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m0plus -T"G:\YandexDisk\Projects\PCB-Heater\firmware\PCB-Heater\STM32G070RBTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="PCB-Heater.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group - @echo 'Finished building target: $@' - @echo ' ' - -default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) - arm-none-eabi-size $(EXECUTABLES) - @echo 'Finished building: $@' - @echo ' ' - -PCB-Heater.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) - arm-none-eabi-objdump -h -S $(EXECUTABLES) > "PCB-Heater.list" - @echo 'Finished building: $@' - @echo ' ' - -# Other Targets -clean: - -$(RM) PCB-Heater.elf PCB-Heater.list PCB-Heater.map default.size.stdout - -@echo ' ' - -secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) - -fail-specified-linker-script-missing: - @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' - @exit 2 - -warn-no-linker-script-specified: - @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' - -.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified - --include ../makefile.targets diff --git a/firmware/PCB-Heater/Debug/objects.list b/firmware/PCB-Heater/Debug/objects.list deleted file mode 100644 index ba4119f..0000000 --- a/firmware/PCB-Heater/Debug/objects.list +++ /dev/null @@ -1,50 +0,0 @@ -"./Core/Src/adc.o" -"./Core/Src/app_freertos.o" -"./Core/Src/gpio.o" -"./Core/Src/main.o" -"./Core/Src/max6675.o" -"./Core/Src/pid.o" -"./Core/Src/spi.o" -"./Core/Src/st7793_8bit.o" -"./Core/Src/stm32g0xx_hal_msp.o" -"./Core/Src/stm32g0xx_hal_timebase_tim.o" -"./Core/Src/stm32g0xx_it.o" -"./Core/Src/syscalls.o" -"./Core/Src/sysmem.o" -"./Core/Src/system_stm32g0xx.o" -"./Core/Src/tim.o" -"./Core/Src/usart.o" -"./Core/Startup/startup_stm32g070rbtx.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc_ex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi_ex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_adc.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.o" -"./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.o" -"./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o" -"./Middlewares/Third_Party/FreeRTOS/Source/croutine.o" -"./Middlewares/Third_Party/FreeRTOS/Source/event_groups.o" -"./Middlewares/Third_Party/FreeRTOS/Source/list.o" -"./Middlewares/Third_Party/FreeRTOS/Source/queue.o" -"./Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.o" -"./Middlewares/Third_Party/FreeRTOS/Source/tasks.o" -"./Middlewares/Third_Party/FreeRTOS/Source/timers.o" -"./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.o" -"./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o" diff --git a/firmware/PCB-Heater/Debug/objects.mk b/firmware/PCB-Heater/Debug/objects.mk deleted file mode 100644 index e423e31..0000000 --- a/firmware/PCB-Heater/Debug/objects.mk +++ /dev/null @@ -1,9 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -USER_OBJS := - -LIBS := - diff --git a/firmware/PCB-Heater/Debug/sources.mk b/firmware/PCB-Heater/Debug/sources.mk deleted file mode 100644 index a1e5316..0000000 --- a/firmware/PCB-Heater/Debug/sources.mk +++ /dev/null @@ -1,31 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (10.3-2021.10) -################################################################################ - -ELF_SRCS := -OBJ_SRCS := -S_SRCS := -C_SRCS := -S_UPPER_SRCS := -O_SRCS := -SIZE_OUTPUT := -OBJDUMP_LIST := -SU_FILES := -EXECUTABLES := -OBJS := -MAP_FILES := -S_DEPS := -S_UPPER_DEPS := -C_DEPS := - -# Every subdirectory with source files must be described here -SUBDIRS := \ -Core/Src \ -Core/Startup \ -Drivers/STM32G0xx_HAL_Driver/Src \ -Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 \ -Middlewares/Third_Party/FreeRTOS/Source \ -Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0 \ -Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang \ -